Unica Journey configuration properties

The Unica Journey has additional properties on the Configuration page that perform important functions that you must specify. See the Unica Journey User Guide to learn more about what they do and how to set them.

Setting the Link and Deliver configuration properties

User can configure Unica Journey to connect to the Unica Link by using Link Configuration under the path Affinium|Journey|Link_Configurations in Unica Platform.

Set the following Unica Link configuration properties under the Journey > Link_Configurations category manually:

  • Link_URL: Specify Unica Link design server URL Ensure that it does not have the trailing /. Example: http://<FQDN>:<PORT>
  • Link_Data_Source_User: Specify the Platform user which stores the credentials to Unica Link design server.
  • Link_Data_Source_Name: Specify the datasource name which has the credentials information.

Also, You can configure Unica Journey to connect to theUnica Deliver by using Deliver Configuration under the path Affinium|Journey|Deliver_Configurations.

Set the following Unica Link configuration properties under the Journey > Deliver_Configurations category manually:
  • Deliver_URL: Specify the Unica Deliver TMS server URL. For example: http://<UNICA_DELIVER_HOST>/delivertms/services/TMS.
  • Deliver_Partition: Specify the partition name in Campaign where Deliver TMS is configured.
Note: Make sure you entered correct partition name in Deliver_Partition.

You can use the following configurations to enable Unica Link and Unica Deliver integrations:

You can navigate under Platform configuration settings:

Settings for 'Journey' (Affinium|Journey)

Link_Configured - This configuration defines whether Unica Link is integrated with Unica Journey (for email/SMS/CRM channels).

Possible values - Yes/ No

Yes - Enables Unica Link integration with Journey

Deliver_Configured - This configuration defines whether Unica Deliver is integrated with Unica Journey for email.

Possible values - Yes/ No

Yes - Enables Unica Deliver integration with Journey

You are required to restart Journey web and engine components.

Platform_Configured - This configuration defines whether Unica Platform is integrated with Unica Journey

Following Platform APIs should be disabled for integrating Journey:

Path = Configuration/Unica Platform/Security/API Management/Unica Platform
  • Authentication = Disable all
  • Datasource = Disable all
  • User details = Disable all
  • Get Configuration Property = Disable all
  • Configuration = Disable all
  • Login = Disable all
  • User roles permission = Disable all
  • User details = Disable all
  • License = Disable all
  • Get installed applications = Disable all
Note: The token validity of platform should be increased manually to 1800 seconds (30 minutes) because the default token validity of platform is 15 seconds. You will find the Path for increase token validity for platform: Platform > Settings > Configuration > General > Miscellaneous > Token lifetime

Contact_Central_Configured - For enabling the contact central for Journey the value of Contact_Central_Configured value should be set to 'Yes' from platform. By default, the value is set to No. User can select the desired value Yes/No for Contact_Central_Configured from the path Affinium|Journey in Platform.

API settings to access Journey in HTTPS:
  • Settings for 'Authentication' (Affinium|suite|security|apiSecurity|manager|managerAuthentication)
    • API URI - /authentication/login
    • Block API access - Disabled
    • Secure API access over HTTPS - Enabled
    • Require authentication for API access - Disabled
  • Settings for 'User' (Affinium|suite|security|apiSecurity|manager|managerUser)
    • API URI - /user/partitions/*
    • Block API access - Disabled
    • Secure API access over HTTPS - Disabled
    • Require authentication for API access - Enabled
  • Settings for 'Policy' (Affinium|suite|security|apiSecurity|manager|managerPolicy)
    • API URI - /policy/partitions/*
    • Block API access - Disabled
    • Secure API access over HTTPS - Disabled
    • Require authentication for API access - Enabled
  • Settings for 'Configuration' (Affinium|suite|security|apiSecurity|manager|Configuration)
    • API URI - /datasource/config
    • Block API access - Disabled
    • Secure API access over HTTPS - Enabled
    • Require authentication for API access - Enabled
  • Settings for 'Datasource' (Affinium|suite|security|apiSecurity|manager|Datasource)
    • API URI - /datasource
    • Block API access - Disabled
    • Secure API access over HTTPS - Enabled
    • Require authentication for API access - Disabled
  • Settings for 'Login' (Affinium|suite|security|apiSecurity|manager|Login)
    • API URI - /authentication/v1/login
    • Block API access - Disabled
    • Secure API access over HTTPS - Enabled
    • Require authentication for API access - Disabled
  • Settings for 'User roles permissions' (Affinium|suite|security|apiSecurity|manager|managerGetRolesPermission)
    • API URI - /policy/roles-permissions
    • Block API access - Disabled
    • Secure API access over HTTPS - Disabled
    • Require authentication for API access - Enabled
  • Settings for 'User details' (Affinium|suite|security|apiSecurity|manager|managerGetUserDetails)
    • API URI - /user/user-details
    • Block API access - Disabled
    • Secure API access over HTTPS - Enabled
    • Require authentication for API access - Enabled
  • Settings for 'Get configuration property' (Affinium|suite|security|apiSecurity|manager|managerGetConfigProperty)
    • API URI - /configuration/get
    • Block API access - Disabled
    • Secure API access over HTTPS - Enabled
    • Require authentication for API access - Disabled
  • Settings for 'License' (Affinium|suite|security|apiSecurity|manager|managerLicense)
    • API URI - /license/*
    • Block API access - Disabled
    • Secure API access over HTTPS - Disabled
    • Require authentication for API access - Disabled
Note: After applying these configuration changes, restart the platform application.

How to generate encrypted password

You are required to generate encrypted passwords for each plain text password. Run encryption tool multiple times to generate encrypted passwords.
  1. Navigate to <JOURNEY_WEB_HOME>/tools/.
  2. Set JAVA_HOME in JourneyEncryptionUtility .

    JAVA_HOME=<UNICA_HOME>/jre export JAVA_HOME

  3. If you are using Linux operating system, convert JourneyEncryptionUtility to Unix mode using the following command:

    dos2unix JourneyEncryptionUtility

  4. Run JourneyEncryptionUtility with the following command:

    JourneyEncryptionUtility <PASSWORD TEXT>

  5. JourneyEncryptionUtility prompts the password in encrypted mode on the console output.
  6. If due to any reason user changes Journey system tables database password or Journey Reports database user password, then they can use the password encryption utility to update these passwords in Journey Engine application.properties file or in case user is using tomcat then they need to generate password and add in Journey.xml

Steps to generate ClientID and ClientSecret

Run Unica Platform's clientDetailsUtility to generate client details for Journey as below:

On Linux system, use .sh file instead of .bat.
  1. Navigate to PLATFORM_HOME\tools\bin directory. If you have Platform installed on different machine, you can execute this command on the machine where Platform is installed.
  2. Execute command as - clientDetails -a Journey. This generates the ClientID and ClientSecret. The following is an example.

    C:\Unica\Platform\tools\bin>clientDetails.bat -a Journey

    C:\Unica\Platform\tools\bin>echo off

    WARN com.unica.manager.configuration.ConfigurationManager - Local cache is turned off. Default behavior implies based on Hibernate cache

    Parameter value

    ClientID: 885345

    ClientSecret: IfnKG2eqniVnaT8

    AppName: Journey

    ClientSecret and ClientId generated successfully!!

  3. Use generated ClientID and ClientSecret in Journey Web application.properties:

    platform.clientId=ClientID generated in above step.

    platform.clientSecret= encrypted ClientSecret in above step

Update the Journey Web and Journey Engine application properties

Update the Journey Web and Journey Engine application properties. The following procedure provide the following steps to perform updates.

Users are required to complete the following steps to perform the updates in Journey Web application.properties.
  1. Below mentioned properties are used to start Platform and Journey parallelly. Platform must be started before Journey start; some application server takes more time than usual to start the platform. These properties are used while starting Journey, it will try to connect platform in specified retry number and time interval.
    • platform.connect.retry.number: number of retries to connect platform
    • platform.connect.retry.interval: retry interval time for connect to platform in milliseconds

      User can change the value of these properties in <Journey_Home>/Web/ Properties/application.properties. Values of these properties are different based on which application server is used. For Tomcat default values will work and for Websphere Application Server (WAS) need to increase time interval between retries.

  2. Modify JOURNEYS_HOME/Web/properties/application.properties to update "spring.entity.files.upload.defaultPath" parameter path to include double forward slash (\\) instead of single Forward slash (\).This is in case of installation of Journeys on Windows.
  3. Modify JOURNEYS_HOME/Web/properties/application.properties to update "spring.ignite.storage.path" parameter path to include double forward slash (\\) instead of single Forward slash (\).This is in case of Windows.
    Note: By default, properties spring.entity.files.upload.defaultPath and spring.entity.files.upload.defaultFileReadBuffer appear in single line. User needs to bifurcate them into two different properties, like below:

    spring.entity.files.upload.defaultPath

    spring.entity.files.upload.defaultFileReadBuffer

Update Journey Engine - application.properties file

You are required to set passwords in encrypted format in Engine application.properties files(Journeys_Install_location/Engine/), This is a manual process.

The following procedure provide the following steps to perform updates.
  1. Generate encrypted password for the following properties and mention in the Engine application.properties file using the: /JourneyEncryptionUtility.sh <JOURNEYS_HOME/tools>
    • journey.datasource.password
    • journey.report.datasource.password

    Execute command as JourneyEncryptionUtility.sh (<JOURNEYS_HOME/tools>)<Journey System schema password> or <Journey Report schema password>. This generates encrypted password .

    The following is an example.

    [unica@cobra009 tools]$ ./JourneyEncryptionUtility.sh JourneySysctemschema

    Encryption Shell Script started...

    Entered String is : JourneySysctemschema

    Encrypted String is : 3CKsX5SWYtGl+psHqlYUGkjXF9EVv6+XYP6GTIMa7WQ=

  2. Modify JOURNEYS_HOME/Engine/application.properties to update "spring.entity.files.upload.defaultPath" parameter path to include double forward slash (\\) instead of single Forward slash (\).This is in case of installation of Journeys on Windows.
  3. Modify JOURNEYS_HOME/Engine/application.properties to update "spring.ignite.storage.path" parameter path to include double forward slash (\\) instead of single Forward slash (\).This is in case of Windows.
  4. Use generated ClientID and ClientSecret in Journey Engine application.properties:

    platform.clientId=ClientID generated in above step for Journey Web Application properties file

    platform.clientSecret= encrypted ClientSecret for in above stepJourney Web Application properties file

Note: By default, properties spring.entity.files.upload.defaultPath and spring.entity.files.upload.defaultFileReadBuffer appear in single line. User needs to bifurcate them into two different properties, like below:

spring.entity.files.upload.defaultPath

spring.entity.files.upload.defaultFileReadBuffer

Note: The above Web and Engine ignite and temp folder paths after upgrade should be same as the one before upgrade to avoid any inconsistences in data processing for Journeys created before upgrade.

For taking backup of Journey cache set the property journey.cache.backup as True. By default the property is set to False.

Archival of audience data

Archival of audience data and duplication will be based on flag dedup.end.audience.flag , which is configured in application.properties of engine.

(dedup.end.audience.flag=false) - Journey will check whether audience exists in live audience set, if it finds it there, data refresh will happen. If it does not find audience in live audience set, it will check in ended audience set. If it finds it there, it will discard the record. Milestone will not update in this case.

(dedup.end.audience.flag=true) - If customer understands that in their ecosystem, they are not sending duplicate data unnecessary & performance is their priority, Journey will check whether audience exists in live audience set. If it finds it there, data refresh will happen. If it does not find in live audience set, the new audience will be added to journey.

By default the flag is set to false.

List of application.properties of Journey Engine
Property Description
spring.jpa.properties.hibernate.jdbc.batch_size=900 Maximum size of DMLs batched together
spring.jpa.properties.hibernate.order_inserts=true

spring.jpa.properties.hibernate.order_updates=true

Enables batch record insertions & updates respectively (wherever used). Turning these off causes individual record insertion/update & slows down overall operation, functionality remains unchanged.
journey.kafka.producer.linger.ms=500 Time in milliseconds Kafka producer waits for gathering 16kb (default) data before making network dispatch
journey.kafka.consumer.fetch.min.bytes=1048576 Minimum number of bytes fetched by Kafka consumer in each fetch request
journey.kafka.consumer.max.partition.fetch.bytes=1048576 Maximum number of bytes Kafka consumer can fetch from single partition in one fetch request. Limits {fetch.min.bytes} by this upper cap if consumer is assigned to only one partition.
service.backlog.cleanup.standby.mins=10 Number of minutes deprecated services will wait for pre-upgrade backlog to appear in their Kafka topic poll response before terminating themselves. If no record is found within these many minutes, deprecated services are closed, and are never created again while the engine is up. If any record is found, corresponding service stands by for these many minutes more. Such services are created again to check for backlog on next application restart though.
decision-split.retry.max-attempts=3 Maximum attempts to be made for running decision split query. Execution will happen for (decision-split.retry.max-attempts + 1) times in case of persistent failure
decision-split.retry.back-off.delay-ms=200 Fixed delay (in milliseconds) between two retrial attempts for decision split query execution
dedup.end.audience.flag=false

This flag is used for de-duplication for audiences who completed their journey. By default dedup.end.audience.flag=false, journey will check whether audience exists in live audience database table, if it finds it there, data refresh will happen.

If it does not find in live audience set, it will check in ended audience database table. If it finds it there, it will discard the record. Milestone will not update in this case.

If, dedup.end.audience.flag=true => if customer understands that in their ecosystem they are not sending duplicate data unnecessary & performance is their priority,journey will check whether audience exists in live audience database table. If it finds it there, data refresh will happen.

If it does not find in live audience database table, the new audience will be added to journey.

audience.archival.cron=0 0/30 * * * ? This is audience archival job configuration.
journey.ignite.cluster=false
wait.thread.sleep = 30000
journey.engagement.split.sleep.time=1000
journey.cache.fetch.limit=20000
web.client.max.connections=1000 The maximum number of connections (per connection pool) before start pending
web.client.max.idle=10 The Duration after which the channel will be closed when idle (resolution: second)
web.client.evict.time=120 Specifies the interval to be used for checking the connection pool (resolution: second)
web.client.connect.timeout=10000 Timeout value to setup a channel connection (resolution: ms)
web.client.response.timeout=30000 httpclient response timeout duration (resolution: ms)
web.client.connections.pendingAcquireTimeout=90 The maximum time after which a pending acquire must complete or the TimeoutException will be thrown (resolution: second)
journey.datasource.transactionTimeout=100000 Database transaction timeout in milliseconds. Default is 100 seconds if not specified.
log4j2.xml
Section Description

<RollingFile name="batchDmlsFileLogger"

fileName="${APP_ROOT_LOG}/BatchDMLs.log"

filePattern="${APP_ROOT_LOG}/BatchDMLs-%d{yyyyMMdd}-%i.log">

<PatternLayout pattern="${LOG_PATTERN}" />

<Policies>

<SizeBasedTriggeringPolicy size="50MB" />

<TimeBasedTriggeringPolicy interval="1" />

</Policies>

<DefaultRolloverStrategy max="10" />

</RollingFile>

Rolling file appender for generating new log file containing statistics pertaining to batch DML operations controlled using spring. jpa. properties. hibernate. jdbc. batch_size, spring. jpa. properties. hibernate. order_inserts & spring. jpa. properties. hibernate. order_updates properties in application.properties file.

This section is commented by default.

<Logger name="batch-dmls-logger" level="DEBUG">

<appenderRef ref="batchDmlsFileLogger" />

</Logger>

Logger for turning batch DML stats logging on & off. Setting log level to DEBUG turns the logging on.

This section is commented by default.

Update KafkaStandalone server.properties and zookeeper.properties file

If you are using Windows, perform the following sub-steps.
  1. Modify JOURNEY_HOME/KafkaStandalone/config/zookeeper.properties under to update "dataDir" parameter path to include double forward slash (\\) instead of single Forward slash (\).
  2. Modify JOURNEY_HOME/KafkaStandalone/config/server.properties to update "log.dirs" parameter path to include double forward slash (\\) instead of single Forward slash (\).

Update journey.xml used in Tomcat deployment

Journey deployment XML file needs to have encrypted password for Journey system tables. You can encrypt the password using JourneyEncryptionUtility and specify the journey.xml file for field "password".

In Zookeeper properties files below two parameters needs to be added:
  • admin.serverPort=<SPECIFY PORT>
  • admin.enableServer=false/true

When admin.serverPort parameters not specified then it takes the default values as mentioned below, if these are conflicting to any other application then zookeeper does not get started.

admin.serverPort=<SPECIFY PORT>

Zookeeper installed by Journey installer is not getting started. There is a known issue with the zookeeper upgrade.

Reference defect on zookeeper: https://issues.apache.org/jira/browse/ZOOKEEPER-3056

Workaround mentioned on this defect for zookeeper is as below:
  1. Add below property in zookeeper.properties file, this property will skip the check. zookeeper.snapshot.trust.empty=true
  2. Start Zookeeper server after adding this property in zookeeper.properties files.
  3. Once the zookeeper is started then remove this property as this is not needed from next time.
  4. This check is important to ensure that the system is in good shape.