<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.onqpr.com/pa/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jaakko.knuutinen</id>
	<title>QPR ProcessAnalyzer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.onqpr.com/pa/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jaakko.knuutinen"/>
	<link rel="alternate" type="text/html" href="https://wiki.onqpr.com/pa/index.php/Special:Contributions/Jaakko.knuutinen"/>
	<updated>2026-04-26T23:04:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://wiki.onqpr.com/pa/index.php?title=PA_Configuration_database_table&amp;diff=27679</id>
		<title>PA Configuration database table</title>
		<link rel="alternate" type="text/html" href="https://wiki.onqpr.com/pa/index.php?title=PA_Configuration_database_table&amp;diff=27679"/>
		<updated>2026-01-29T09:41:33Z</updated>

		<summary type="html">&lt;p&gt;Jaakko.knuutinen: Added a note that the SAML user group names are case sensitive.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;QPR ProcessAnalyzer database has a configuration table &#039;&#039;&#039;PA_Configuration&#039;&#039;&#039; containing settings listed in the tables below. You need &#039;&#039;&#039;SQL Server Management Studio&#039;&#039;&#039; to edit the settings in the configuration table. QPR ProcessAnalyzer Server needs to be restarted (e.g. IIS application pool recycled) for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
For boolean values, &#039;&#039;true&#039;&#039; and &#039;&#039;1&#039;&#039; are valid values for yes, and &#039;&#039;false&#039;&#039; and &#039;&#039;0&#039;&#039; are valid for no.&lt;br /&gt;
&lt;br /&gt;
== General Settings ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left&amp;quot;&lt;br /&gt;
!Name	!!Default&amp;amp;nbsp;value	!!Description&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot;&amp;gt;SessionIdleTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
||3600&lt;br /&gt;
||Idle user session expiration timeout in seconds. User session expires if the session hasn&#039;t been used after this amount of time.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot;&amp;gt;SessionMaximumDuration&amp;lt;/span&amp;gt;&lt;br /&gt;
||86400&lt;br /&gt;
||Maximum duration for a user session in seconds. Even if a session is used so that the SessionIdleTimeout is not reached, the session is expired after this amount of time.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot;&amp;gt;SandboxDatabaseConnectionString&amp;lt;/span&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
||Connection string to scripting sandbox database (ETL). If not defined, SQL-based ETL scripts cannot be run. Connection string for the scripting sandbox database is similar to the  [[Server_settings_in_appsettings.json|QPR ProcessAnalyzer database connection string]]. More information: [[Setting up Scripting Sandbox]].&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot;&amp;gt;DefaultUiLanguage&amp;lt;/span&amp;gt;&lt;br /&gt;
||en_US&lt;br /&gt;
||Language code for the UI language that new user accounts get by default. Thus, a created user account has this language until the user changes her/his language. Also the login page is translated using this language when QPR ProcessAnalyzer is used for the first time in that web browser (when user has changed the language, it&#039;s remembered by the browser). This setting must be one of the supported language codes (xx_XX):&lt;br /&gt;
* English: &#039;&#039;&#039;en_US&#039;&#039;&#039;&lt;br /&gt;
* Finnish: &#039;&#039;&#039;fi_FI&#039;&#039;&#039;&lt;br /&gt;
* French: &#039;&#039;&#039;fr_FR&#039;&#039;&#039;&lt;br /&gt;
* German: &#039;&#039;&#039;de_DE&#039;&#039;&#039;&lt;br /&gt;
* Polish: &#039;&#039;&#039;pl_PL&#039;&#039;&#039;&lt;br /&gt;
* Portuguese: &#039;&#039;&#039;pt_BR&#039;&#039;&#039;&lt;br /&gt;
* Spanish: &#039;&#039;&#039;es_ES&#039;&#039;&#039;&lt;br /&gt;
* Swedish: &#039;&#039;&#039;sv_SE&#039;&#039;&#039;&lt;br /&gt;
* Ukrainian: &#039;&#039;&#039;uk_UK&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot;&amp;gt;DefaultDateFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
||MM/dd/yyyy&lt;br /&gt;
||Default date format that new user accounts get by default. The date format does not contain the time part (e.g. hours, minutes and seconds). Defined using the .Net date format (https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings).&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot;&amp;gt;DefaultFirstDayOfWeek&amp;lt;/span&amp;gt;&lt;br /&gt;
||0&lt;br /&gt;
||Default first day of the week that new user accounts get by default. &#039;&#039;&#039;0&#039;&#039;&#039; is Sunday and &#039;&#039;&#039;1&#039;&#039;&#039; is Monday. This information is used by the UI when showing e.g. calendars.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot;&amp;gt;DefaultUse12HourClock&amp;lt;/span&amp;gt;&lt;br /&gt;
||false&lt;br /&gt;
||Defines whether the 12-hour clock is used by default (instead of the 24-hour clock) for the new user accounts when showing time information in the UI. Defined as &#039;&#039;&#039;true&#039;&#039;&#039; or &#039;&#039;&#039;false&#039;&#039;&#039;. More information about the 12-hour clock: https://en.wikipedia.org/wiki/12-hour_clock.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot; id=&amp;quot;DefaultDataSource&amp;quot;&amp;gt;DefaultDataSource&amp;lt;/span&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
||Datasource where datatables data is stored when datatables are created by a script when the datasource is not explicitly specified in the script. Possible values are &#039;&#039;&#039;Snowflake&#039;&#039;&#039; and &#039;&#039;&#039;SqlServer&#039;&#039;&#039;. Value &#039;&#039;snowflake&#039;&#039; can be used when the &#039;&#039;SnowflakeConnectionString&#039;&#039; setting is defined, and value &#039;&#039;sqlserver&#039;&#039; can be used when the setting &#039;&#039;SqlServerConnectionString&#039;&#039; is configured. The setting can be changed without affecting the existing datatables, as the setting only affect new datatables. When this setting is empty, datatables are created in the metadata database.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot; id=&amp;quot;SqlServerConnectionString&amp;quot;&amp;gt;SqlServerConnectionString&amp;lt;/span&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
||Connection string for the SQL Server database containing the datatables data. It&#039;s recommended to use a separate database, but it&#039;s also possible to connect to the same database as the configuration data. If this setting is not configured, local datatables cannot be created (SQL Server stored). Existing datatables located in the configuration datatabase still work even if this setting has not be configured. Note that the connection uses ADO.Net (not ODBC), so the connection string is similar to the configuration database ([[Installing_QPR_ProcessAnalyzer_Server#Server_settings_file_(appsettings.json)|appsettings.json]] file).&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:green;font-weight:bold;&amp;quot; id=&amp;quot;SnowflakeConnectionString&amp;quot;&amp;gt;SnowflakeConnectionString&amp;lt;/span&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
||ODBC connection string for the Snowflake account. This setting is needed to make analytics calculations in the Snowflake. More information how to configure the [[Snowflake_Connection_Configuration#Set_Snowflake_ODBC_connection|Snowflake connection string]]. The Snowflake ODBC driver also needs to be installed in the machine running the QPR ProcessAnalyzer Server. When this setting has been configured, users can create Snowflake stored datatables and models using Snowflake calculation.&lt;br /&gt;
&lt;br /&gt;
When running QPR ProcessAnalyzer in the Snowpark Container Services, leave the SnowflakeConnectionString empty because then the connection string is created automatically using the method provided by the Snowpark Container Services.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span id=&amp;quot;OpenAIAPIKey&amp;quot; style=&amp;quot;color:green;font-weight:bold;&amp;quot;&amp;gt;OpenAIAPIKey&amp;lt;/span&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
||API key for the OpenAI API (https://platform.openai.com/docs/api-reference). It needs to be configured to use the [[AI_Assistant_for_QPR_ProcessAnalyzer|AI Assistant]] and [[Generic_Functions_in_QPR_ProcessAnalyzer#OpenAIChatCompletion|OpenAIChatCompletion]] function.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span id=&amp;quot;OpenAIDefaultModelName&amp;quot; style=&amp;quot;color:green;font-weight:bold;&amp;quot;&amp;gt;OpenAIDefaultModelName&amp;lt;/span&amp;gt;&lt;br /&gt;
||gpt-4o&lt;br /&gt;
||OpenAI large language model (LLM) to use for the [[AI_Assistant_for_QPR_ProcessAnalyzer|AI Assistant]] and [[Generic_Functions_in_QPR_ProcessAnalyzer#OpenAIChatCompletion|OpenAIChatCompletion]] function. If not defined, &#039;&#039;&#039;gpt-4o&#039;&#039;&#039; will be used. Note that only LLM&#039;s that support the function calling feature, are suitable for the AI Assistant. More information about OpenAI models: https://platform.openai.com/docs/models.&lt;br /&gt;
|-&lt;br /&gt;
||DefaultCortexAgentsModelName&lt;br /&gt;
||llama3.1-70b&lt;br /&gt;
||Specifies the default language model when using Snowflake Cortex Agents (https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-rest-api). If not defined, &amp;quot;llama3.1-70b&amp;quot; is used.&lt;br /&gt;
|-&lt;br /&gt;
||AllowExternalDatasources&lt;br /&gt;
||true&lt;br /&gt;
||Can be used to disallow all connections to external datasources in the expression language and SQL scripts to improve security. Disallowed operations include ODBC, OLE DB, SQL Server (Ado.Net), SAP, Salesforce, and call web service. Note that this setting does not prevent the Snowflake processing. Regardless of this setting, QPR ScriptLauncher can be used to extract data from source systems.&lt;br /&gt;
|-&lt;br /&gt;
|DatabaseId&lt;br /&gt;
|&lt;br /&gt;
||Unique identifier for the QPR ProcessAnalyzer environment. Any characters between a-z, A-Z, 0-9 and _ (underscore) can be used in the DatabaseId. If the DatabaseId is missing or set to null, the system will generate a new GUID during startup and use it as the DatabaseId. The DatabaseId can also be an empty string. If using several QPR ProcessAnalyzer environments, make sure each use a different DatabaseId. The DatabaseId is used as part of the table names in Snowflake and SQL Server (in the datatables database). Thus if the DatabaseId is changed, all tables in Snowflake and SQL Server named with qprpa_dt_&amp;lt;DatabaseId&amp;gt;_&amp;lt;DatatableId&amp;gt; need to be renamed.&lt;br /&gt;
|-&lt;br /&gt;
||NumberOfParallelModelReaders&lt;br /&gt;
||4&lt;br /&gt;
||Models and datatable contents can be loaded with multiple simultaneous connections to the database to speed up the loading. This setting determines how many parallel loaders/readers at maximum (loaders are loading at the same time). For smaller models there are less parallel loaders than the defined limit: If there are less than 100000 rows in the table, there is only one loader. If there are less than 200000 rows in the table, there are only two loaders, and so on. &lt;br /&gt;
&lt;br /&gt;
The more there are parallel loaders, the more processor load and network bandwidth is consumed, and other operations in QPR ProcessAnalyzer might slow down. Note also that the performance optimum is achieved with a certain number of parallel loaders which differs between environment. Thus to achieve the best performance, data loading should be tested with different number of parallel loaders. Increasing number of parallel loaders beyond the optimum decreases the performance.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
||StartupModelLoadingMaxParallelism&lt;br /&gt;
||2&lt;br /&gt;
||Maximum number of QPR ProcessAnalyzer models that are loaded into memory simultaneously by the [[Automatic_Model_Loading_on_Server_Startup|Automatic Loading on Server Startup]]. If there are more models to be loaded on the server startup than this setting, loading for the rest of the models is started one by one when previous model loadings are completed. If this setting is not defined, &#039;&#039;&#039;2&#039;&#039;&#039; is used as a default value.&lt;br /&gt;
&lt;br /&gt;
Loading more models at the same time will speed up the whole model loading process, but on the other hand, it causes more load on the system, which affects the system responsiveness for users. Model loading consists of (1) transferring data from the datasource to QPR ProcessAnalyzer and (2) loaded data preprocessing into a model. The former uses mainly network bandwidth (if datasource is in a different server) and the latter uses mainly processor capacity in the QPR ProcessAnalyzer server. &lt;br /&gt;
&lt;br /&gt;
This setting affects only the model loading during the server startup and it doesn&#039;t restrict models loadings initiated by users.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span id=&amp;quot;QueryTimeout&amp;quot;&amp;gt;QueryTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
||300&lt;br /&gt;
||Timeout (in seconds) for requests made to /api/expression/query and /api/expression endpoints. When the timeout is exceeded, the query is stopped and a timeout error is returned. Purpose of the timeout is to protect the system against potentially too long running or even never-ending queries which might otherwise jam the system.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span id=&amp;quot;CacheOnlyPrimaryKeysForFilters&amp;quot;&amp;gt;CacheOnlyPrimaryKeysForFilters&amp;lt;/span&amp;gt;&lt;br /&gt;
||false&lt;br /&gt;
||Defines whether to include all columns in the Snowflake event cache filter tables (&#039;&#039;false&#039;&#039;), or only the primary key columns (&#039;&#039;true&#039;&#039;). When &#039;&#039;false&#039;&#039;, cache table creation is slower, but the analysis calculation is faster because the original event table is not used anymore. When &#039;&#039;false&#039;&#039;, also the cache tables require more storage space in Snowflake.&lt;br /&gt;
|-&lt;br /&gt;
||AllowNonTemporaryETLTargetTable&lt;br /&gt;
||false&lt;br /&gt;
||Defined whether ETL scripts are allowed to create global temporary database tables (tables starting with ##). More information about temporary tables: https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql?view=sql-server-ver15#temporary-tables.&lt;br /&gt;
|-&lt;br /&gt;
||DatabaseBulkCopyTimeout&lt;br /&gt;
||600&lt;br /&gt;
||Timeout used for data import operations to datatables.&lt;br /&gt;
|-&lt;br /&gt;
|SandboxDatabaseBulkCopyTimeout&lt;br /&gt;
||600&lt;br /&gt;
||Timeout used for data import operations to sandbox tables in the SQL scripts.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:lightgrey;&amp;quot;&amp;gt;DatabaseBulkCopyBatchSize&amp;lt;/span&amp;gt;&lt;br /&gt;
||5000&lt;br /&gt;
||BulkCopyBatchSize given for QPR ProcessAnalyzer database SqlBulkCopy operations.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:lightgrey;&amp;quot;&amp;gt;SandboxDatabaseBulkCopyBatchSize&amp;lt;/span&amp;gt;&lt;br /&gt;
||5000&lt;br /&gt;
||BulkCopyBatchSize given for sandbox SqlBulkCopy operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SAML 2.0 Federated Authentication Settings ==&lt;br /&gt;
Note that the SAMLMetadataUrl and ServiceProviderLocation are mandatory for the federated authentication to work.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left&amp;quot;&lt;br /&gt;
!Name	!!Description&lt;br /&gt;
|-&lt;br /&gt;
||SAMLMetadataUrl&lt;br /&gt;
||&lt;br /&gt;
Metadata URL of the identity provider (IdP). Check that the metadata url can actually be opened using a web browser and is publicly available. The metadata is an XML document starting with &#039;&#039;&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&#039;&#039;&#039; followed by an &#039;&#039;&#039;EntityDescriptor&#039;&#039;&#039; tag. The metadata URL might look &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;https://your.federated.identity.provider.com/saml/metadata&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;. This setting is mandatory for the SAML authentication to work.&lt;br /&gt;
|-&lt;br /&gt;
||ServiceProviderLocation&lt;br /&gt;
||&lt;br /&gt;
Specifies the QPR ProcessAnalyzer server location (the root path which contains e.g. the &#039;&#039;ui&#039;&#039; folder). It&#039;s used by the url to redirect back to QPR ProcessAnalyzer after a successful authentication from the identity provider. The setting is defined in the following form: &#039;&#039;&#039;https://&amp;lt;hostname&amp;gt;/qprpa&#039;&#039;&#039;, for example &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;https://customer.onqpr.com/qprpa&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;. Note that the actual redirect back url is &#039;&#039;&#039;https://&amp;lt;hostname&amp;gt;/qprpa/api/Saml2/Acs&#039;&#039;&#039; (/api/Saml2/Acs is automatically included to the url). This setting is mandatory for the SAML authentication to work. Note that if this reply url is configured the identity provider, it must match with the ServiceProviderLocation setting.&lt;br /&gt;
|-&lt;br /&gt;
||SAMLUserIdAttribute&lt;br /&gt;
||&lt;br /&gt;
Name of the SAML attribute in the assertion that will be used as the user&#039;s login name. If this field is not defined, the &#039;&#039;&#039;saml:Assertion&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;saml:Subject&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;saml:NameID&#039;&#039;&#039; attribute in the assertion is used. If this setting is given, one of the &#039;&#039;&#039;saml:Assertion&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;saml:AttributeStatement&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;saml:Attribute&#039;&#039;&#039; elements in the assertion is used (the &#039;&#039;&#039;Name&#039;&#039;&#039; attribute in the &#039;&#039;&#039;saml:Attribute&#039;&#039;&#039; element is used for matching). Please note that the saml:NameID element is different than the usual SAML attributes that are defined by the saml:Attribute elements. For example, if an email address is used as a user id, the value of the setting could be for example &#039;&#039;&amp;lt;nowiki&amp;gt;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress&amp;lt;/nowiki&amp;gt;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
||SAMLGroupsAttribute&lt;br /&gt;
||Attribute name in SAML assertion that is mapped to user groups in QPR ProcessAnalyzer. The user group names are case sensitive. When a user logs in, the user is added to and removed from groups based on the information in the SAML assertion. If this setting is not configured, users are not added to or removed from groups automatically. Note that the user needs to login for the groups to be synchronized. If a group doesn&#039;t exist in QPR ProcessAnalyzer, that group is skipped.&lt;br /&gt;
&lt;br /&gt;
In the SAML assertion, attributes are in the saml:Assertion &amp;gt; saml:AttributeStatement &amp;gt; saml:Attribute elements (the Name attribute in the saml:Attribute element is used for matching).&lt;br /&gt;
|-&lt;br /&gt;
||SAMLEncryptionCertificate&lt;br /&gt;
||This setting defines a PFX formatted X.509 certificate (defined in RCF 1422) used to encrypt SAML assertions. The public key of the certificate is published in the service provider metadata, where the identity provider can read it and encrypt SAML assertions. QPR ProcessAnalyzer as the service provider uses the corresponding private key of the certificate to decrypt SAML assertions. The setting needs to be a PFX formatted certificate file that is base64 encoded and it doesn&#039;t contain the BEGIN CERTIFICATE etc. header or footer lines. This setting is needed only when using the SAML assertions encryption. Even though this setting is defined, the SAML assertions are not required to be encrypted. More information how to create the certificate file (https://stackoverflow.com/questions/16480846/x-509-private-public-key) and convert it to base64 (https://stackoverflow.com/questions/46959822/base-64-encoded-form-of-the-pfx-file).&lt;br /&gt;
|-&lt;br /&gt;
||SAMLSigningCertificate&lt;br /&gt;
||This setting defines a PFX formatted X.509 certificate (defined in RCF 1422) used to sign SAML authentication requests sent from QPR ProcessAnalyzer to the identity provider. The public key of the certificate is published in the service provider metadata, where the identity provider can read it, to verify the authenticity of the SAML requests. The setting needs to be a PFX formatted certificate file that is base64 encoded and it doesn&#039;t contain the BEGIN CERTIFICATE etc. header or footer lines. If this setting is not defined, the internal hard-coded signing certificate is used. More information how to create the certificate file (https://stackoverflow.com/questions/16480846/x-509-private-public-key) and convert it to base64 (https://stackoverflow.com/questions/46959822/base-64-encoded-form-of-the-pfx-file).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SMTP Server Settings ==&lt;br /&gt;
SMTP server settings are needed for QPR ProcessAnalyzer to send email messages. Email sending is used by the [[Email_Notifications|notifications]] and the [[Generic_Functions_in_QPR_ProcessAnalyzer#SendEmail|SendEmail]] function in the expression language.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left&amp;quot;&lt;br /&gt;
!Name	!!Description&lt;br /&gt;
|-&lt;br /&gt;
||SmtpServer&lt;br /&gt;
||DNS name, host name or IP address of the SMTP server. Mandatory setting for the email sending to work.&lt;br /&gt;
|-&lt;br /&gt;
||SmtpPort&lt;br /&gt;
||TCP port number of the SMTP server. If not defined, port 25 is used by default.&lt;br /&gt;
|-&lt;br /&gt;
||SmtpAuthenticationUsername&lt;br /&gt;
||User name for authenticating to the SMTP server. If not defined, no authentication is used to connect to the SMTP server.&lt;br /&gt;
|-&lt;br /&gt;
||SmtpFromAddress&lt;br /&gt;
||Email address where email messages sent by QPR ProcessAnalyzer appear to be coming from. This doesn&#039;t need to be a real email address, although the address used may affect email spam filters. The setting configured here is the default email address to use in following cases:&lt;br /&gt;
* &#039;&#039;From address&#039;&#039; is not set for the email notifications&lt;br /&gt;
* &#039;&#039;From&#039;&#039; parameter is not defined for the expression language &#039;&#039;SendEmail&#039;&#039; function&lt;br /&gt;
* &#039;&#039;EmailFrom&#039;&#039; parameter is not defined for the SQL Scripting SendEmail operation&lt;br /&gt;
|-&lt;br /&gt;
||SmtpAuthenticationPassword&lt;br /&gt;
||Password for authenticating to the SMTP server.&lt;br /&gt;
|-&lt;br /&gt;
||SmtpEnableSSL&lt;br /&gt;
||Use value &#039;&#039;&#039;True&#039;&#039;&#039; or &#039;&#039;&#039;False&#039;&#039;&#039; depending whether TLS connection to the SMTP server is used or not. If not defined, &#039;&#039;False&#039;&#039; is the default value.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Readonly Information ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left&amp;quot;&lt;br /&gt;
!Name	!!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span style=&amp;quot;color:lightgrey;&amp;quot;&amp;gt;DatabaseVersion&amp;lt;/span&amp;gt;&lt;br /&gt;
||Database schema version. It will be updated automatically when the newer version of QPR ProcessAnalyzer Server connects to the database and performs migration for the database schema.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:lightgrey;&amp;quot;&amp;gt;InitializationScriptDatabaseVersion&amp;lt;/span&amp;gt;&lt;br /&gt;
||Database version that was when the database was initialized when the software was installed. Do not change this setting.&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;span style=&amp;quot;color:lightgrey;&amp;quot;&amp;gt;MinimumDatabaseVersion&amp;lt;/span&amp;gt;&lt;br /&gt;
||Minimum allowed database version for QPR ProcessAnalyzer Server connecting to the database. This is a legacy setting and it should not be used.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jaakko.knuutinen</name></author>
	</entry>
	<entry>
		<id>https://wiki.onqpr.com/pa/index.php?title=Create_Simulated_Eventlog&amp;diff=26207</id>
		<title>Create Simulated Eventlog</title>
		<link rel="alternate" type="text/html" href="https://wiki.onqpr.com/pa/index.php?title=Create_Simulated_Eventlog&amp;diff=26207"/>
		<updated>2025-04-15T07:07:35Z</updated>

		<summary type="html">&lt;p&gt;Jaakko.knuutinen: /* Removed &amp;quot;_marhink&amp;quot; from the end of PredictionProcedureName value. Previous value was: &amp;quot;qprpa_sp_prediction_marhink&amp;quot; which caused an error when running the script. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article has instructions how to install, configure and use eventlog simulations. The simulation creates a new model that contains both the source model data and the new simulated data. Case attribute &#039;&#039;&#039;Simulated&#039;&#039;&#039; can be used to determine whether the case is in the source data (&#039;&#039;false&#039;&#039;) or whether the simulation generated it as a new simulated case (&#039;&#039;true&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Prerequisites for simulation ==&lt;br /&gt;
As prerequisite, prediction must be installed into the used Snowflake as described in [[Create Predicted Eventlog|Install prediction in Snowflake]].&lt;br /&gt;
&lt;br /&gt;
== Create simulation script in QPR ProcessAnalyzer ==&lt;br /&gt;
You can create your own simulation script from scratch, or use one of the scripts provided below as a starting point.&lt;br /&gt;
&lt;br /&gt;
=== Creating a simulation model that deletes specific events ===&lt;br /&gt;
1. Create the following example expression script (e.g., with name &amp;quot;&#039;&#039;&#039;Create simulation model&#039;&#039;&#039; &#039;&#039;&#039;- delete events&#039;&#039;&#039;&amp;quot;):&amp;lt;syntaxhighlight lang=&amp;quot;typescript&amp;quot;&amp;gt;&lt;br /&gt;
let sourceModel = ProjectByName(&amp;quot;&amp;lt;project name&amp;gt;&amp;quot;).ModelByName(&amp;quot;&amp;lt;model name&amp;gt;&amp;quot;);&lt;br /&gt;
let flowFromEventType = &amp;quot;&amp;lt;from event type of a flow to modify&amp;gt;&amp;quot;, flowToEventType = &amp;quot;&amp;lt;to event type of a flow to modify&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
let targetProject = Project;&lt;br /&gt;
_system.ML.ApplyTransformations(#{&lt;br /&gt;
  &amp;quot;Name&amp;quot;: &amp;quot;My simulation model - delete&amp;quot;,   // Name of the PA model to generate to the target project.&lt;br /&gt;
  &amp;quot;SourceModel&amp;quot;: sourceModel,               // Snowflake-based PA model used for training the prediction model.&lt;br /&gt;
  &amp;quot;TargetProject&amp;quot;: targetProject,           // Target project to create the model into.&lt;br /&gt;
  &amp;quot;Transformations&amp;quot;: [#{                    // Transformation configurations.&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;modify_flow_durations&amp;quot;,&lt;br /&gt;
    &amp;quot;column&amp;quot;: sourceModel.EventsDataTable.ColumnMappings[&amp;quot;EventType&amp;quot;],&lt;br /&gt;
    &amp;quot;flows&amp;quot;: [#{&lt;br /&gt;
      &amp;quot;from&amp;quot;: flowFromEventType,&lt;br /&gt;
      &amp;quot;to&amp;quot;: flowToEventType,&lt;br /&gt;
      &amp;quot;probability&amp;quot;: 1.0,&lt;br /&gt;
      &amp;quot;operation&amp;quot;: #{&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;set_value&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0.0&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;delete&amp;quot;: true&lt;br /&gt;
    }]&lt;br /&gt;
  }]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;2. Configure simulation for the previously created script as instructed in the next chapter. At minimum, replace the tags listed below with some suitable values:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;project name&amp;gt;&#039;&#039;&#039;: Name of the project in which the source model is located.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;model name&amp;gt;&#039;&#039;&#039;: Name of the model to be used as source model. This data in this source model will be used as source data to be modified by the simulation transformations.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;from event type of a flow to modify&amp;gt;&#039;&#039;&#039;: From-event type name of flows from which the from-event is to be deleted.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;to event type of a flow to modify&amp;gt;&#039;&#039;&#039;: To-event type name of flows from which the from-event is to be deleted.&lt;br /&gt;
&lt;br /&gt;
=== Create simulation model automating all the resources belonging to the same role as specified resource ===&lt;br /&gt;
1. Create the following example expression script (e.g., with name &amp;quot;&#039;&#039;&#039;Create simulation model&#039;&#039;&#039; &#039;&#039;&#039;- automate&#039;&#039;&#039;&amp;quot;):&amp;lt;syntaxhighlight lang=&amp;quot;typescript&amp;quot;&amp;gt;&lt;br /&gt;
let sourceModel = ProjectByName(&amp;quot;&amp;lt;project name&amp;gt;&amp;quot;).ModelByName(&amp;quot;&amp;lt;model name&amp;gt;&amp;quot;);&lt;br /&gt;
let resourceColumnName = &amp;quot;&amp;lt;event data column having resource names&amp;gt;&amp;quot;;&lt;br /&gt;
let resourceNameToAutomate = &amp;quot;&amp;lt;resource value whose role should be automated&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
let targetProject = Project;&lt;br /&gt;
_system.ML.ApplyTransformations(#{&lt;br /&gt;
  &amp;quot;PredictionProcedureName&amp;quot;: &amp;quot;qprpa_sp_prediction&amp;quot;,&lt;br /&gt;
  &amp;quot;Name&amp;quot;: &amp;quot;My simulation model - automate&amp;quot;,   // Name of the PA model to generate to the target project.&lt;br /&gt;
  &amp;quot;SourceModel&amp;quot;: sourceModel,                 // Snowflake-based PA model used for training the prediction model.&lt;br /&gt;
  &amp;quot;TargetProject&amp;quot;: targetProject,             // Target project to create the model into.&lt;br /&gt;
  &amp;quot;Transformations&amp;quot;: [#{                      // Transformation configurations&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;resources_to_roles&amp;quot;,&lt;br /&gt;
    &amp;quot;resource_column&amp;quot;: resourceColumnName,&lt;br /&gt;
    &amp;quot;role_column&amp;quot;: &amp;quot;Role&amp;quot;,&lt;br /&gt;
    &amp;quot;role_name_template&amp;quot;: &amp;quot;Role %d&amp;quot;&lt;br /&gt;
  }, #{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;modify_flow_durations&amp;quot;,&lt;br /&gt;
    &amp;quot;input&amp;quot;: #{&lt;br /&gt;
      &amp;quot;role_name&amp;quot;: #{&lt;br /&gt;
        &amp;quot;input&amp;quot;: &amp;quot;resource_to_role_map&amp;quot;,&lt;br /&gt;
        &amp;quot;value_path&amp;quot;: [resourceNameToAutomate]&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;column&amp;quot;: &amp;quot;Role&amp;quot;,&lt;br /&gt;
    &amp;quot;flows&amp;quot;: [#{&lt;br /&gt;
      &amp;quot;from_input&amp;quot;: &amp;quot;role_name&amp;quot;,&lt;br /&gt;
      &amp;quot;operation&amp;quot;: #{&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;set_value&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;probability&amp;quot;: 0.5&lt;br /&gt;
      }&lt;br /&gt;
    }]&lt;br /&gt;
  }]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;2. Configure simulation for the previously created script as instructed in the next chapter. At minimum, replace the tags listed below with some suitable values:&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;project name&amp;gt;&#039;&#039;&#039;: Name of the project in which the source model is located.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;model name&amp;gt;&#039;&#039;&#039;: Name of the model to be used as source model. This data in this source model will be used as source data to be modified by the simulation transformations.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;event data column having resource names&amp;gt;&#039;&#039;&#039;: Name of the event data column that contains resource names.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;resource value whose role should be automated&amp;gt;&#039;&#039;&#039;: Name of the resource whose role is to be automated.&lt;br /&gt;
&lt;br /&gt;
== Configure simulation ==&lt;br /&gt;
Simulation script has the following settings in the ApplyTransformations call:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Name&#039;&#039;&#039;: Name of the QPR ProcessAnalyzer model that is created to the target project. The model will contain the source model content and the predictions.&lt;br /&gt;
* &#039;&#039;&#039;SourceModel&#039;&#039;&#039;: Source model for which the simulation is made. Model can be selected for example based on id with ModelById function or by name with ModelByName function.&lt;br /&gt;
* &#039;&#039;&#039;TargetProject&#039;&#039;&#039;: Target project to create the new model into.&lt;br /&gt;
* &#039;&#039;&#039;Transformations&#039;&#039;&#039;: Array of transformation configuration objects. Each object supports the following parameters:&lt;br /&gt;
** &#039;&#039;&#039;type&#039;&#039;&#039;: Defines the type of the transformation to perform. See below for more details on the supported transformations. Supported values are:&lt;br /&gt;
*** &#039;&#039;&#039;enforce_resource_limits&#039;&#039;&#039;: Used to modify given event log using given maximum resource limits.&lt;br /&gt;
*** &#039;&#039;&#039;extract_max_resource_usages&#039;&#039;&#039;: Used to extract, for every value of a specified column, the maximum number of concurrent cases in given event log that have that value. &lt;br /&gt;
*** &#039;&#039;&#039;generate&#039;&#039;&#039;: Used to generate a new event log using a trained ML model.&lt;br /&gt;
*** &#039;&#039;&#039;modify_flow_durations&#039;&#039;&#039;: Used to modify durations of flows and possibly remove events having specific flows.&lt;br /&gt;
*** &#039;&#039;&#039;modify_values&#039;&#039;&#039;: Used to modify values of a dictionary given as input (e.g., dictionary generated by extract_max_resource_usages).&lt;br /&gt;
*** &#039;&#039;&#039;resources_to_roles&#039;&#039;&#039;: Performs &amp;quot;organization mining&amp;quot; by trying to group together column values (e.g., resources) that are used in similar fashion in given event log (e.g., resources that are often present in similar set of activities).&lt;br /&gt;
**&#039;&#039;&#039;input&#039;&#039;&#039;: Can be used to specify that given transformation input parameters get their values from the previous transformation result.&lt;br /&gt;
***Value can be either direct mapping by just the name of the transformation result property, or it can be a value mapping configuration object that supports the following parameters:&lt;br /&gt;
****&#039;&#039;&#039;input&#039;&#039;&#039;: Name of the parameter to get from the previous transformation result as the root object of the actual value to extract.&lt;br /&gt;
****&#039;&#039;&#039;value_path&#039;&#039;&#039;: An array of property names to traverse into the root object.&lt;br /&gt;
&lt;br /&gt;
=== Transformation: event_resource_limits ===&lt;br /&gt;
Using given input data, this transformation generates a new event log which does not exceed the concurrency limitations of specified column values. &lt;br /&gt;
&lt;br /&gt;
Event rows are traversed in time order, and if at some point a limit would be exceeded, instead of outputting the actual event, a new copy of the actual event, with copied event properties, is created to represent the queue for the actual event. &lt;br /&gt;
&lt;br /&gt;
Only after an event leaves from the column value that contains a queue, the event that had been waiting for the longest in the queue will be generated (following the FIFO-principle).&lt;br /&gt;
&lt;br /&gt;
==== Supported parameters ====&lt;br /&gt;
* &#039;&#039;&#039;column&#039;&#039;&#039;: Name of the column having the values whose concurrent usage is to be limited by specified limits&lt;br /&gt;
* &#039;&#039;&#039;limits&#039;&#039;&#039;: Specifies an object containing key-value -pairs where keys are column values and values contain an integer specifying the maximum number of concurrent cases in the given event log that can contain given value.&lt;br /&gt;
* &#039;&#039;&#039;queue_event_activity_name&#039;&#039;&#039;: If set, specifies the name template used for queue-events. In this template, when a queue event is created, %s is replaced with the name of the activity this queue event is queuing to.&lt;br /&gt;
** If not set, the activity name is not altered at all for the queue event.&lt;br /&gt;
* &#039;&#039;&#039;queue_event_column&#039;&#039;&#039;: &lt;br /&gt;
** If queue_event_activity_name is set:&lt;br /&gt;
*** If the event represents a queue-event, the value in this column specifies the name of the queue-activity.&lt;br /&gt;
*** Otherwise, the value is null.&lt;br /&gt;
** If queue_event_activity_name is not set:&lt;br /&gt;
*** If the event represents a queue-event, the value in this column True.&lt;br /&gt;
*** Otherwise, the value is False.&lt;br /&gt;
&lt;br /&gt;
==== Inputs ====&lt;br /&gt;
Event log to operate on.&lt;br /&gt;
&lt;br /&gt;
==== Outputs ====&lt;br /&gt;
Event log with resource limits enforced.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
#{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;enforce_resource_limits&amp;quot;,&lt;br /&gt;
  &amp;quot;queue_event_column&amp;quot;: &amp;quot;Queue&amp;quot;,&lt;br /&gt;
  &amp;quot;queue_event_activity_name&amp;quot;: &amp;quot;%s - Queue&amp;quot;,&lt;br /&gt;
  &amp;quot;limits&amp;quot;: #{&lt;br /&gt;
    &amp;quot;Role 3&amp;quot;: None&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;input&amp;quot;: #{&lt;br /&gt;
    &amp;quot;limits&amp;quot;: &amp;quot;role_limits&amp;quot;,&lt;br /&gt;
    &amp;quot;column&amp;quot;: &amp;quot;role_column&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformation: extract_max_resource_usages ===&lt;br /&gt;
Extract, for every value of a specified column, the maximum number of concurrent cases in given event log that have that value.&lt;br /&gt;
&lt;br /&gt;
==== Supported parameters ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;resource_column&#039;&#039;&#039;:&lt;br /&gt;
** The name of the column representing the resources whose maximum concurrent case usages are to be calculated.&lt;br /&gt;
&lt;br /&gt;
==== Inputs ====&lt;br /&gt;
Event log to operate on.&lt;br /&gt;
&lt;br /&gt;
==== Outputs ====&lt;br /&gt;
&lt;br /&gt;
* max_resource_usages:&lt;br /&gt;
** A dictionary object containing resource names as keys (unique resource_column values) and their maximum usage in the event log.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
#{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;extract_max_resource_usages&amp;quot;,&lt;br /&gt;
  &amp;quot;resource_column&amp;quot;: &amp;quot;SAP_User&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformation: generate ===&lt;br /&gt;
Generate a new event log using the configured model [[Create Predicted Eventlog|prediction generation parameters (GenerationConfiguration)]].&lt;br /&gt;
&lt;br /&gt;
==== Supported parameters ====&lt;br /&gt;
Supports all the same parameters as those supported by model prediction generation configuration.&lt;br /&gt;
&lt;br /&gt;
==== Inputs ====&lt;br /&gt;
Does not support inputs.&lt;br /&gt;
&lt;br /&gt;
==== Outputs ====&lt;br /&gt;
Generated event log.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
#{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;generate&amp;quot;,&lt;br /&gt;
  &amp;quot;model_name&amp;quot;: &amp;quot;ML model&amp;quot;,&lt;br /&gt;
  &amp;quot;cases_to_generate&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;max_num_events&amp;quot;: 20&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformation: modify_flow_durations ===&lt;br /&gt;
Modify durations of flows and possibly remove events having specific flows.&lt;br /&gt;
&lt;br /&gt;
==== Supported parameters ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;column&#039;&#039;&#039;: The name of the column based on which the flows are created. Usually this is the column containing activities, but could also be, e.g., organization units, users, …&lt;br /&gt;
* &#039;&#039;&#039;flows&#039;&#039;&#039;: Flows to transform. Contains an array of flow transformation configuration objects. Each object defines transformations performed on one flow type defined by starting and ending column values. Supports the following properties:&lt;br /&gt;
** &#039;&#039;&#039;delete&#039;&#039;&#039;: Same as delete_from.&lt;br /&gt;
** &#039;&#039;&#039;delete_from&#039;&#039;&#039;: If defined, specifies whether the &amp;quot;from event&amp;quot; of the matched flow should be removed after applying the operation (if defined).&lt;br /&gt;
** &#039;&#039;&#039;delete_to&#039;&#039;&#039;: If defined, specifies whether the &amp;quot;to event&amp;quot; of the matched flow should be removed after applying the operation (if defined).&lt;br /&gt;
** &#039;&#039;&#039;from&#039;&#039;&#039;: Column value starting the flow.&lt;br /&gt;
*** If this and from_input are both undefined, any starting value is accepted.&lt;br /&gt;
** &#039;&#039;&#039;from_input&#039;&#039;&#039;: If defined, specifies the name of the transformation-level parameter from which the actual column value starting the flow is read from.&lt;br /&gt;
*** Overrides the value defined in from-parameter.&lt;br /&gt;
** &#039;&#039;&#039;operation&#039;&#039;&#039;: Specifies the actual flow duration modification operation to perform as value modification configuration object where the value is the duration in seconds. Supports the following properties:&lt;br /&gt;
*** &#039;&#039;&#039;probability&#039;&#039;&#039;: If defined, specifies the percentage probability of applying the operation to any matching instance of the flow. &lt;br /&gt;
**** Value should be a numeric value between 0 and 1.0. &lt;br /&gt;
**** This probability applies only to this operation.&lt;br /&gt;
**** The default value is 1.0.&lt;br /&gt;
*** &#039;&#039;&#039;type&#039;&#039;&#039;: Type of the operation. The following types are supported:&lt;br /&gt;
**** &#039;&#039;&#039;add&#039;&#039;&#039;: Sets the value to be the current value plus the number specified by the value.&lt;br /&gt;
**** &#039;&#039;&#039;multiply&#039;&#039;&#039;: Sets the value to be the current value multiplied by the number specified by the value.&lt;br /&gt;
**** &#039;&#039;&#039;set_value&#039;&#039;&#039;: Sets the value to be exactly the number specified by the value.&lt;br /&gt;
*** &#039;&#039;&#039;value&#039;&#039;&#039;: Value used by the operation.&lt;br /&gt;
** &#039;&#039;&#039;probability&#039;&#039;&#039;: If defined, specifies the percentage probability of applying the operation to any matching instance of the flow.&lt;br /&gt;
*** Value should be a numeric value between 0 and 1.0.&lt;br /&gt;
*** This probability applies, in addition to the operation specified by the operation-parameter, also to any possible other transformations, such as event deletion.&lt;br /&gt;
*** Default value is 1.0&lt;br /&gt;
** &#039;&#039;&#039;to&#039;&#039;&#039;: Column value ending the flow.&lt;br /&gt;
*** If this and to_input are both undefined, any ending value is accepted.&lt;br /&gt;
** &#039;&#039;&#039;to_input&#039;&#039;&#039;: If defined, specifies the name of the transformation-level parameter to which the actual column value ending the flow is read from.&lt;br /&gt;
*** Overrides the value defined in to-parameter.&lt;br /&gt;
&lt;br /&gt;
==== Inputs ====&lt;br /&gt;
Event log to operate on.&lt;br /&gt;
&lt;br /&gt;
==== Outputs ====&lt;br /&gt;
Transformed event log.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
#{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;modify_flow_durations&amp;quot;,&lt;br /&gt;
  &amp;quot;column&amp;quot;: &amp;quot;Organization&amp;quot;,&lt;br /&gt;
  &amp;quot;flows&amp;quot;: [#{&lt;br /&gt;
    &amp;quot;from&amp;quot;: &amp;quot;Delivery&amp;quot;,&lt;br /&gt;
    &amp;quot;operation&amp;quot;: #{&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;set_value&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;: 0.0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;delete&amp;quot;: true&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformation: modify_values ===&lt;br /&gt;
Modify values of an object given as input (e.g., object generated by extract_max_resource_usages).&lt;br /&gt;
&lt;br /&gt;
Due to the required inputs, this transformation can&#039;t be the first transformation to perform.&lt;br /&gt;
&lt;br /&gt;
==== Supported parameters ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;values&#039;&#039;&#039;: Array of value configuration objects. Each object supports the following properties:&lt;br /&gt;
** &#039;&#039;&#039;input&#039;&#039;&#039;: Name of the result to modify, where the result is the output of the previous transformation.&lt;br /&gt;
** &#039;&#039;&#039;input_key_from&#039;&#039;&#039;: If defined, specifies the the name of the property of a input object whose value contains the name of the property whose value is to be modified.&lt;br /&gt;
** &#039;&#039;&#039;input_key_value_path&#039;&#039;&#039;: If input_key_from is defined and is represented as an object, this configuration should specify an array of property names to traverse into the object. &lt;br /&gt;
*** The value at the end of this path will be used as the name of the property to modify in the input.&lt;br /&gt;
** &#039;&#039;&#039;operation&#039;&#039;&#039;: Specifies the actual value modification operation to perform as value modification configuration object. Supports the following properties:&lt;br /&gt;
*** &#039;&#039;&#039;probability&#039;&#039;&#039;: If defined, specifies the percentage probability of applying the operation to any matching instance of the flow. &lt;br /&gt;
**** Value should be a numeric value between 0 and 1.0. &lt;br /&gt;
**** This probability applies only to this operation.&lt;br /&gt;
**** The default value is 1.0.&lt;br /&gt;
*** &#039;&#039;&#039;type&#039;&#039;&#039;: Type of the operation. The following types are supported:&lt;br /&gt;
**** &#039;&#039;&#039;add&#039;&#039;&#039;: Sets the value to be the current value plus the number specified by the value.&lt;br /&gt;
**** &#039;&#039;&#039;multiply&#039;&#039;&#039;: Sets the value to be the current value multiplied by the number specified by the value.&lt;br /&gt;
**** &#039;&#039;&#039;set_value&#039;&#039;&#039;: Sets the value to be exactly the number specified by the value.&lt;br /&gt;
*** &#039;&#039;&#039;value&#039;&#039;&#039;: Value used by the operation.&lt;br /&gt;
&lt;br /&gt;
==== Inputs ====&lt;br /&gt;
Output of the previous transformation operation. &lt;br /&gt;
&lt;br /&gt;
==== Outputs ====&lt;br /&gt;
The same output as the previous performed transformation, except with the specified value modifications applied.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
#{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;modify_values&amp;quot;,&lt;br /&gt;
  &amp;quot;values&amp;quot;: [#{&lt;br /&gt;
    &amp;quot;input&amp;quot;: &amp;quot;role_limits&amp;quot;,&lt;br /&gt;
    &amp;quot;input_key_from&amp;quot;: &amp;quot;resource_to_role_map&amp;quot;,&lt;br /&gt;
    &amp;quot;input_key_value_path&amp;quot;: [&amp;quot;Tina&amp;quot;],&lt;br /&gt;
    &amp;quot;operation&amp;quot;: #{&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;multiply&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;: 0.5&lt;br /&gt;
    }&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformation: resources_to_roles ===&lt;br /&gt;
Performs &amp;quot;organization mining&amp;quot; by grouping together column values (e.g., resources) that are used in similar fashion in given event log. E.g., resources that are often present in similar set of activities.&lt;br /&gt;
&lt;br /&gt;
==== Supported parameters ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;resource_column&#039;&#039;&#039;: The name of the column containing names of resources.&lt;br /&gt;
* &#039;&#039;&#039;resource_limits&#039;&#039;&#039;: Contains an object dictionary containing resource names with their maximum concurrent usages.&lt;br /&gt;
** If set, when building role_limits output, these values will be summed for each resource into the resulting role-based usage limit.&lt;br /&gt;
** If not set, each resource in a role will be counted as one, when calculating the role_limits.&lt;br /&gt;
* &#039;&#039;&#039;role_column&#039;&#039;&#039;: The name of the column to be created and whose values will indicate the role in which the resource belongs to.&lt;br /&gt;
* &#039;&#039;&#039;role_name_template&#039;&#039;&#039;: If set, specifies the name template used for role names. In this template, %d will be replaced by a numeric value starting from 1. &lt;br /&gt;
** The default value is &amp;quot;Role %d&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;similarity_threshold&#039;&#039;&#039;: The minimum value of Pearson correlation coefficient calculated between two resources in order for them to be considered as having the same role.&lt;br /&gt;
** The default value is 0.7 &lt;br /&gt;
&lt;br /&gt;
==== Inputs ====&lt;br /&gt;
Event log to operate on.&lt;br /&gt;
&lt;br /&gt;
==== Outputs ====&lt;br /&gt;
&lt;br /&gt;
* Transformed event log.&lt;br /&gt;
* Result dictionary object containing the following properties:&lt;br /&gt;
** &#039;&#039;&#039;resource_column&#039;&#039;&#039;: The name of the column containing names of resources.&lt;br /&gt;
** &#039;&#039;&#039;resource_to_role_map&#039;&#039;&#039;: An object containing resource names as property names and role names as value.&lt;br /&gt;
** &#039;&#039;&#039;role_column&#039;&#039;&#039;: The name of the generated column whose values will indicate the role in which the resource belongs to.&lt;br /&gt;
** &#039;&#039;&#039;role_limits&#039;&#039;&#039;: An object containing role names as property names and maximum usage for that role as value.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
#{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;resources_to_roles&amp;quot;,&lt;br /&gt;
  &amp;quot;resource_column&amp;quot;: &amp;quot;SAP_User&amp;quot;,&lt;br /&gt;
  &amp;quot;role_column&amp;quot;: &amp;quot;Role&amp;quot;,&lt;br /&gt;
  &amp;quot;role_name_template&amp;quot;: &amp;quot;Role %d&amp;quot;,&lt;br /&gt;
  &amp;quot;input&amp;quot;: #{&lt;br /&gt;
    &amp;quot;resource_limits&amp;quot;: &amp;quot;max_resource_usages&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaakko.knuutinen</name></author>
	</entry>
	<entry>
		<id>https://wiki.onqpr.com/pa/index.php?title=Chart_Linked_Settings&amp;diff=25659</id>
		<title>Chart Linked Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.onqpr.com/pa/index.php?title=Chart_Linked_Settings&amp;diff=25659"/>
		<updated>2025-01-10T13:08:55Z</updated>

		<summary type="html">&lt;p&gt;Jaakko.knuutinen: Added an example Linked settings to filter events based on event attribute values.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chart linked settings are used to bind together selected settings in a chart, that will make sure the bound settings have always same values. The settings are defined to a &#039;&#039;linked settings group&#039;&#039;, and when any of the linked settings is changed, other linked settings in the same group are also changed automatically.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Tips when creating linked settings:&lt;br /&gt;
* Finding the correct technical setting name requires to investigate the chart settings json (in the &#039;&#039;Advanced&#039;&#039; tab). The label names in the settings dialog are different than the technical names that need to be used in the linked settings.&lt;br /&gt;
* Make sure to bind only settings that are of same data type. For example, trying to bind string and integer settings will likely not work. An an exception, it&#039;s possible to bind string array and individual string values, because the individual values are automatically converted into arrays.&lt;br /&gt;
* It&#039;s possible to define as many linked settings to the group as needed. Obviously, there needs to be at least two settings in the group, for the linked settings to work meaningfully. There can also be as many linked setting groups in the same chart as needed.&lt;br /&gt;
* Measures, dimensions and columns cannot be changed using the linked settings, but their parameters can be bound to linked settings.&lt;br /&gt;
* Dashboard variables are available in custom expressions by using tags (syntax: &#039;&#039;&amp;lt;#tagName&amp;gt;&#039;&#039;), which does not require linked settings.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Linked settings are configured in the &#039;&#039;&#039;Advanced&#039;&#039;&#039; tab of chart/flowchart by clicking &#039;&#039;&#039;Linked settings&#039;&#039;&#039;. Linked settings json consists of &#039;&#039;setting groups&#039;&#039; which are array of objects. Each object points to an individual setting and it has the following properties:&lt;br /&gt;
* &#039;&#039;&#039;type&#039;&#039;&#039;: One of the following type of setting:&lt;br /&gt;
** &#039;&#039;&#039;measure&#039;&#039;&#039;: For measure parameters.&lt;br /&gt;
** &#039;&#039;&#039;dimension&#039;&#039;&#039;: For dimension and column parameters.&lt;br /&gt;
** &#039;&#039;&#039;eventtypemeasure&#039;&#039;&#039;: For flowchart event measure parameters.&lt;br /&gt;
** &#039;&#039;&#039;flowmeasure&#039;&#039;&#039;: For flowchart flow measure parameters.&lt;br /&gt;
** &#039;&#039;&#039;root&#039;&#039;&#039;: For analyzed objects parameters.&lt;br /&gt;
** &#039;&#039;&#039;generic&#039;&#039;&#039;: For other settings in the chart, such as &#039;&#039;Maximum rows&#039;&#039; (technical name: maxRows), &#039;&#039;Visualization&#039;&#039; (technical name: maxRows), &#039;&#039;Show Data Labels&#039;&#039; (technical name: datalabels), &#039;&#039;Model&#039;&#039; (technical name: modelId), etc.&lt;br /&gt;
** &#039;&#039;&#039;tag&#039;&#039;&#039;: For binding to a tag. Tags can be used in the custom expressions.&lt;br /&gt;
** &#039;&#039;&#039;variable&#039;&#039;&#039;: For binding to a dashboard variable. Dashboard variables can be used to bind together settings across multiple charts. Linked settings need to be defined for all the bound charts.&lt;br /&gt;
** &#039;&#039;&#039;filtervalue&#039;&#039;&#039;: For binding to filter rule parameters, such as case/event attribute values or event types.&lt;br /&gt;
** &#039;&#039;&#039;filterattribute&#039;&#039;&#039;: For binding to case or event attribute name in filter rule.&lt;br /&gt;
* &#039;&#039;&#039;index&#039;&#039;&#039;: Defines the order number (starts from 0). Used hen &#039;&#039;type&#039;&#039; is a &#039;&#039;measure&#039;&#039;, &#039;&#039;dimension&#039;&#039;, &#039;&#039;eventtypemeasure&#039;&#039;, &#039;&#039;flowmeasure&#039;&#039;, or &#039;&#039;filtervalue&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;parameter&#039;&#039;&#039;: Name of the chart setting or parameter. All properties stored to the &#039;&#039;expressionParameters&#039;&#039; in chart json settings, can be used. In addition, following property names are available: &amp;quot;aggregate&amp;quot;, &amp;quot;decimals&amp;quot;, &amp;quot;unit&amp;quot; and &amp;quot;dateGranularity&amp;quot;. &lt;br /&gt;
* &#039;&#039;&#039;tagName&#039;&#039;&#039;: When &#039;&#039;type&#039;&#039; is &#039;&#039;tag&#039;&#039;, defines the bound tag name. The tag can be used in custom expressions similar to variables with syntax &amp;lt;#MyTagName&amp;gt;. Linking to tags is one-way: when a setting is changed, the tag is changed accordingly. On the other hand, the tag value itself cannot be changed directly.&lt;br /&gt;
* &#039;&#039;&#039;variableName&#039;&#039;&#039;: When linked setting type is &#039;&#039;variable&#039;&#039;, defines the variable name. Linking to variables is two-way: when a variable value is changed, the other linked setting is changed accordingly, and when the other setting is changed, a linked variable value is changed accordingly.&lt;br /&gt;
* &#039;&#039;&#039;variableFormat&#039;&#039;&#039;: Defines whether the linked variables use the &#039;&#039;&#039;stringified&#039;&#039;&#039; (default) ([[Stringified Value Format|more about stringified value format]]) or &#039;&#039;&#039;json&#039;&#039;&#039; format (https://en.wikipedia.org/wiki/JSON). When working with Snowflake models, use the &#039;&#039;stringified&#039;&#039; format. The &#039;&#039;json&#039;&#039; format is required when using in-memory models with the [[Dropdown List Selector]] because for in-memory models, the Dropdown List Selector uses the &#039;&#039;json&#039;&#039; format (due to backward compatibility).&lt;br /&gt;
* &#039;&#039;&#039;filterGroupType&#039;&#039;&#039;: When &#039;&#039;type&#039;&#039; is &#039;&#039;filtervalue&#039;&#039; or &#039;&#039;filterattribute&#039;&#039;, defines the filter group type as one of the following: &#039;&#039;IncludeCases&#039;&#039;, &#039;&#039;ExcludeCases&#039;&#039;, &#039;&#039;IncludeEvents&#039;&#039;, &#039;&#039;ExcludeEvents&#039;&#039;, &#039;&#039;IncludeEventTypes&#039;&#039;, &#039;&#039;ExcludeEventTypes&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;filterRuleType&#039;&#039;&#039;: When &#039;&#039;type&#039;&#039; is &#039;&#039;filtervalue&#039;&#039; or &#039;&#039;filterattribute&#039;&#039;, defines the filter rule type as one of the following: &#039;&#039;CaseAttributeValue&#039;&#039;, &#039;&#039;EventAttributeValue&#039;&#039;, &#039;&#039;Attribute&#039;&#039;, &#039;&#039;EventType&#039;&#039;, &#039;&#039;Case&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;attribute&#039;&#039;&#039;: When &#039;&#039;type&#039;&#039; is &#039;&#039;filtervalue&#039;&#039;, defines the attribute name. Used for filter rule types &#039;&#039;CaseAttribute&#039;&#039;, &#039;&#039;EventAttribute&#039;&#039; and &#039;&#039;Attribute&#039;&#039;. This setting is optional, and when not defined, the linked setting is bound to the first filter rule matching with the &#039;&#039;filterGroupType&#039;&#039; and &#039;&#039;filterRuleType&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;expressionCategory&#039;&#039;&#039;: When &#039;&#039;type&#039;&#039; is &#039;&#039;filtervalue&#039;&#039; or &#039;&#039;filterattribute&#039;&#039;, and referring to a measure/dimension/column level filter, defines the measure/dimension/colum as one of the following: &#039;&#039;measure&#039;&#039;, &#039;&#039;dimension&#039;&#039;, &#039;&#039;eventtypemeasure&#039;&#039;, &#039;&#039;flowmeasure&#039;&#039;. When the expressionCategory is not defined, the linked setting refers to a chart level filter rule.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Measure and dimension parameters ===&lt;br /&gt;
[[File:Linkedsettings.png|right|700px]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;measure&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 0,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;Start event&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;measure&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 1,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;Start event&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	],&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;measure&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 0,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;End event&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;measure&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 1,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;End event&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	],&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;measure&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 0,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;Time unit&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;measure&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 1,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;Time unit&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyzed objects parameters ===&lt;br /&gt;
This example binds together &#039;&#039;Analyzed objects&#039;&#039; parmeter &#039;&#039;Start event&#039;&#039; with similar parameter of a measure.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;root&amp;quot;,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;Start event&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;measure&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 0,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;Event&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generic settings ===&lt;br /&gt;
This example binds together the &#039;&#039;Maximum rows&#039;&#039; and &#039;&#039;Analyzed objects sample size&#039;&#039; settings.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;rootSampleSize&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;maxRows&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter rules===&lt;br /&gt;
This example binds dimension&#039;s filter rule (which type is cases going through event types) to the same dimension&#039;s parameter.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;filtervalue&amp;quot;,&lt;br /&gt;
			&amp;quot;expressionCategory&amp;quot;: &amp;quot;dimension&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 0,&lt;br /&gt;
			&amp;quot;filterGroupType&amp;quot;: &amp;quot;IncludeCases&amp;quot;,&lt;br /&gt;
			&amp;quot;filterRuleType&amp;quot;: &amp;quot;EventType&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;dimension&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 0,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;Event&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dashboard variables ===&lt;br /&gt;
This example binds &#039;&#039;Maximum rows&#039;&#039; setting to dashboard variable &#039;&#039;MaxItems&#039;&#039;. If several charts use the same variable, settings can be bound across several charts.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;variable&amp;quot;,&lt;br /&gt;
			&amp;quot;variableName&amp;quot;: &amp;quot;MaxItems&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;maxRows&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom expression tags ===&lt;br /&gt;
This example binds tag named &#039;&#039;CaseAttributeName&#039;&#039; to a measure parameter to select the case attribute. The tag &#039;&#039;&amp;lt;#CaseAttributeName&amp;gt;&#039;&#039; can be used an all custom expressions of this chart.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;tag&amp;quot;,&lt;br /&gt;
			&amp;quot;tagName&amp;quot;: &amp;quot;CaseAttributeName&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;measure&amp;quot;,&lt;br /&gt;
			&amp;quot;index&amp;quot;: 0,&lt;br /&gt;
			&amp;quot;parameter&amp;quot;: &amp;quot;Attribute&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
] &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Binding to case attribute filters with attribute name and attribute values ===&lt;br /&gt;
This example binds dashboard variables &#039;&#039;CaseAttributeName&#039;&#039; and &#039;&#039;CaseAttributeValues&#039;&#039; to the chart filter rule to include case attribute values. The filter rule need to pre-exist for these linked settings to work.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;variable&amp;quot;,&lt;br /&gt;
			&amp;quot;variableName&amp;quot;: &amp;quot;CaseAttributeName&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;filterattribute&amp;quot;,&lt;br /&gt;
			&amp;quot;filterGroupType&amp;quot;: &amp;quot;IncludeCases&amp;quot;,&lt;br /&gt;
			&amp;quot;filterRuleType&amp;quot;: &amp;quot;CaseAttributeValue&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	],&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;variable&amp;quot;,&lt;br /&gt;
			&amp;quot;variableName&amp;quot;: &amp;quot;CaseAttributeValues&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;filtervalue&amp;quot;,&lt;br /&gt;
			&amp;quot;filterGroupType&amp;quot;: &amp;quot;IncludeCases&amp;quot;,&lt;br /&gt;
			&amp;quot;filterRuleType&amp;quot;: &amp;quot;CaseAttributeValue&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter events based on event attribute name and event attribute value ===&lt;br /&gt;
This example binds dashboard variables &#039;&#039;dbAttributeName&#039;&#039; and &#039;&#039;dbAttributeValue1&#039;&#039; to the chart filter rule to include events with the chosen event attribute values. The filter rule need to pre-exist for these linked settings to work.&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;variable&amp;quot;,&lt;br /&gt;
			&amp;quot;variableName&amp;quot;: &amp;quot;dbAttributeName&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;filterattribute&amp;quot;,&lt;br /&gt;
			&amp;quot;filterGroupType&amp;quot;: &amp;quot;IncludeEvents&amp;quot;,&lt;br /&gt;
			&amp;quot;filterRuleType&amp;quot;: &amp;quot;Attribute&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	],&lt;br /&gt;
	[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;variable&amp;quot;,&lt;br /&gt;
			&amp;quot;variableName&amp;quot;: &amp;quot;dbAttributeValue1&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;filtervalue&amp;quot;,&lt;br /&gt;
			&amp;quot;filterGroupType&amp;quot;: &amp;quot;IncludeEvents&amp;quot;,&lt;br /&gt;
			&amp;quot;filterRuleType&amp;quot;: &amp;quot;Attribute&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaakko.knuutinen</name></author>
	</entry>
</feed>