Skip to main content
Skip table of contents

Example environment settings for NexJ CRM deployment

The following are example environment settings for a typical NexJ CRM deployment on Model Server.

For information about environment setting values for IBM WebSphere, see Example environment settings for NexJ CRM deployment in the deployment documentation for the 8.9 release.

For detailed descriptions of all environment properties, see the Environment topic in the Model Description Language Reference at https://community.nexj.com/documentation/reference/modl/latest/Environment.html.

Specifying environment settings

You can specify all environment variables in a single .environment file or use an environment file as a template in combination with a .properties file. For more information, see Creating environment files.

Using the environment file as a template is the recommended method. For more information, see Using the environment file as a template with .properties files.

Application server settings

https://community.nexj.com/documentation/reference/modl/latest/Server.html<Environment>

Additional environment variables for a typical NexJ CRM deployment

AttributeDescriptionValue
batchEmailRecipientListEnabled

Enables users to view a list of selected email recipients and modify the list.

false
batchNotifications

Enables batch task and document creation notifications.

false
birthdayMailerEnabledEnables batch printing of birthday mailers for contacts.false
callRecordsEnabled

Enables call records functionality.

false
currencyConversionEnabled

Enables currency conversion to allow developers to convert values between currencies for the NexJ application.

false
debug

Enables debugging.

true
emailDraftEnabled

Enables users to preview batch emails before sending them to recipients.

false
emailSignatureEnabled

Enables users to include email signatures when sending batch emails.

false
emailToServiceRequest

Enables users to automatically create service requests from customer emails.

false
exchangeLogEnabled

Enables including Exchange synchronization process logs in the application logs.

true
hierarchySecurityEnabled

Enables hierarchy based access for entities, opportunities, and activities.

false
nameChangeContextAudit

Enables automatic context auditing of changes to the name attribute for audited instances.

true
ruleSLA

Enables service level agreements functionality for service requests.

false
theme

The theme which should be used to override the default look and feel of the application.

mono
materialDesign

Reserved for future use. Do not enable.

false
sampleData

Specifies whether sample data is generated.

false
uowListenerEnabled

Enables the unit of work listener component that shares NexJ CRM transactional data with registered listeners.

false
config

In a .properties file, indicates which .environment file is used as the template.

Not supported in a .environment file.

For more information about using a .properties file to configure your environment, see Using the environment file as a template with .properties files.

Development.environment

portal.Portal.locationEnabled

Enables the location (#) part of the url to support back button functionality.

source project: afl-portal

false

For information about environment variables used to configure ad hoc reporting, see Setting up ad hoc reporting.

For information about environment variables used to configure the cluster discovery protocol, see Configuring the cluster discovery protocol.

For information about environment variables related to auditing (eventAudit, readAudit, and updateAudit), see Configuring audit trails.

For information about environment variables that affect system performance and behavior, see Specifying JVM arguments and system properties.

Data source connection settings

A typical deployment of NexJ CRM requires the following data sources to be configured with appropriate properties.

The SessionDatabase data source is required when using session persistence.

The following data sources are required for a typical deployment:

  • AuditLogDatabase
  • call:Call
  • Conversation
  • DefaultRelationalDatabase
  • ecr:ECR
  • flow:Flow
  • LockDatabase
  • msg:Messaging
  • ObjectQueueDatabase
  • rules:Rules
  • SessionDatabase
  • sso:SSO
  • StagingDatabase
  • StatDatabase
  • uicomp:UIComponent

The suggested properties and values are the same for all data sources and may be included under one data source connection. For detailed descriptions of database connection properties, see the DataSourceConnections topic in the Model Description Language Reference at https://community.nexj.com/documentation/reference/modl/latest/t_Connections_DataSourceConnections.html.

Channel connection settings

A typical deployment of NexJ CRM requires that you add certain channels to the environment file. Some common channels and channel types are listed below.

For detailed descriptions of channel connection properties, see the Channel Connections topic in the Model Description Language Reference at https://community.nexj.com/documentation/reference/modl/latest/t_Environment_ChannelConnections.html.

MessageQueueConnection

For detailed descriptions of MessageQueueConnection channel connection properties, see https://community.nexj.com/documentation/reference/modl/latest/t_ChannelConnections_MessageQueueConnection.html .

  • ErrorQueue
  • RetryQueue

MailConnection

For detailed descriptions of MailConnection channel connection properties, see https://community.nexj.com/documentation/reference/modl/latest/t_ChannelConnections_MailConnection.html.

  • Mail

HTTPConnection

For detailed descriptions of HTTPConnection channel connection properties, see https://community.nexj.com/documentation/reference/modl/latest/t_ChannelConnections_HTTPConnection.html.

HelpChannel HTTPConnection channel

  • HelpChannel

For HelpChannel, the possible values for the url property are:

  • https://<intranet.example.com:8080>/help/ to specify an internally-run help server running on port 8080.
  • https://documentation.nexj.com/pubuser95  to point to the public end-user documentation for NexJ CRM 9.5.

HTTPConnection channels for Exchange

  • ExchangeEWSSender
  • ExchangeEWSNotificationReceiver

For the ExchangeEWSSender channel connection, the value for the url property should be http://<host>/ews/Exchange.asmx and the value for the readTimeout property should be true.

HTTPConnection channels for inform

  • inform:ArticleSearch
  • inform:RelatedObject

For the inform:ArticleSearch channel connection, the value for the url property is provided by Grapevine6.

HTTPConnection channels for rest

HTTP channel connections are required for using the REST API.  For more information, see Enabling and configuring REST API v2.

  • rest:OpenAPI
  • rest:REST
  • rest:SelectionOptions

InfluxDB HTTPConnection channel

  • monitor:influxdb:HTTPSenderchannel

For the InfluxDB channel connection the value for the url property should be  https://<intranet.example.com:8086>/write ?db=database/ , to indicate the secure user-accessible URL for the server that writes to the specified InfluxDB database, including the port number, if required.

FileConnection

For detailed descriptions of FileConnection channel connection properties, see https://community.nexj.com/documentation/reference/modl/latest/t_ChannelConnections_FileConnection.html.

  • ReportingOutputFileChannel

KafkaConnection 

For detailed descriptions of KafkaConnection channel connection properties, see https://community.nexj.com/documentation/reference/modl/latest/t_ChannelConnections_KafkaConnection.html.

  • kafkaChannel

You can define some attributes both at the channel level and the channel connection level. Channel connection settings override any individual channel settings.

If your NexJ application uses the Avro format to send Kafka messages, the Kafka channel requires additional configuration. For more information, see Additional configuration for sending Avro messages.

SOA connection settings

A typical deployment of NexJ CRM requires that you add certain SOA connections to the environment file.

The following SOA connections are required for a typical deployment:

  • nexj:act:ActTemplate:1.0
  • nexj:act:ActivityPlan:1.0
  • nexj:act:ApprovalObject:1.0
  • nexj:act:DocumentService:1.0
  • nexj:act:Task:1.0
  • nexj:call:InboundCall:1.0
  • nexj:crm:AssignmentModel:1.0
  • nexj:crm:EntityParticipation:1.0
  • nexj:crm:Household:1.0
  • nexj:crm:Interaction:1.0
  • nexj:crm:Note:1.0
  • nexj:crm:Person:1.0
  • nexj:crm:ScheduleItem:1.0
  • nexj:crm:Task:1.0
  • nexj:crm:User:1.0
  • nexj:crm:UserPerson:1.0
  • nexj:flow:FlowObject:1.0
  • nexj:flow:QuestionnaireService:1.0
  • nexj:flow:SecurityDelegateService:1.0
  • nexj:ilm:DistributeActionCommandClient:1.0
  • nexj:ilm:Lead:1.0
  • nexj:leaf:Leaflet:1.0
  • nexj:rules:CreateActivityPlanCommandClient:1.0
  • nexj:rules:CreateTaskCommandClient:1.0
  • nexj:rules:MessageActionCommandClient:1.0
  • nexj:rules:Rule:1.0
  • nexj:rules:SetActionCommandClient:1.0
  • nexj:soa:Audit:1.0
  • nexj:soa:Bulletin:1.0
  • nexj:soa:ConversationService:1.0
  • nexj:soa:DataMatchService:1.0
  • nexj:soa:DataMatchServiceConfiguration:1.0
  • nexj:soa:DesktopBeaconPushService:1.0
  • nexj:soa:DesktopPushService:1.0
  • nexj:soa:DesktopStreamRefreshPushService:1.0
  • nexj:soa:EmailNotificationService:1.0
  • nexj:soa:MobilePushService:1.0
  • nexj:soa:NotificationService:1.0
  • nexj:soa:PortalIntegration:1.0
  • nexj:soa:PortletRegistry:1.0
  • nexj:soa:Registry:1.0
  • nexj:soa:SubscriptionEngineService:1.0
  • nexj:soa:UserRegistry:1.0
  • nexj:soa:UserRegistryClient:1.0
  • nexj:sso:Authentication:1.0
  • nexj:ui:ObjectComponentClient:1.0
  • nexj:ui:UIComponent:1.0
  • nexj:ui:UIComponentClient:1.0
  • nexj:ui:WorkQueueItemRelatedObject:1.0

The suggested attributes and values are the same for all SOA connections. For detailed descriptions of SOA connection settings, see https://community.nexj.com/documentation/reference/modl/latest/t_SOAConnections_SOAConnection.html.

Example XML environment file for NexJ CRM deployment on Model Server 

The settings from the previous sections are reflected in the following example environment file.

See sample environment file
XML
<Environment 
  authDomain="<EXAMPLE.COM>" 
  authService="<HTTP/localhost.example.com>"
  batchEmailRecipientListEnabled="false"
  batchNotifications="false"
  birthdayMailerEnabled="false"
  callRecordsEnabled="false"
  clientPerfStatusEnabled="true"
  clientPerfStatusMobileRedCriteria="1500 45 400 30"
  clientPerfStatusMobileYellowCriteria="750 45 200 15"
  currencyConversionEnabled="false"
  description="Local machine with the bootstrap container in the default location"
  emailDraftEnabled="false"
  emailSignatureEnabled="false"
  emailToServiceRequest="false"
  hierarchySecurityEnabled="false"
  httpForbiddenEnabled="true"
  httpGZip="true"
  httpReportURL="<http://server.example.com:port/reporting>"
  httpURL="<http://server.example.com:port/nexj/>"
  journalDirectory="tx${test.clone}"
  location="c:\java\container\deploy"
  materialDesign="false"
  messageUser="nexjsa"
  meta.bireport.enabled="false"
  nameChangeContextAudit="true"
  password="<Deployment_Password>"
  persistentSession="true"
  pollPeriod="300000" 
  previewThreshold="202400"
  pushPassword="<Push_Password>"
  pushRedirectorURL="<http://localhost:port/nexj/pushRedirect>"
  pushServerURLs="<http://app1.local:8080/nexj/push http://app2.local:8080/nexj/push>"
  pushType="streaming"
  pushUser="<Push_ID>"
  readAudit="none"
  rest.configMetadata="CRMRestAPIConfig" 
  rest.schemaBase="CRMSchemaBaseJSON" 
  rest.version="1.0.0" 
  rpcPrivilege="InternalManage"
  ruleSLA="false"
  secureTransport="false"
  tagsEnabled="false"
  type="Generic"
  uowListenerEnabled="false"  
  updateAudit="false"
  user="<Deployment_ID>">
  <PKIKeyPairs>
    <PKIKeyPair keystore="<keystore>" name="<adminID>" password="testPass"/>
  </PKIKeyPairs> 
  <Hosts>
      <Host name="dai" trusted="true" url="<httpURL>"/>
    </Hosts>
  <DataSourceConnections>
    <RelationalDatabaseConnection 
    adapter="MSSQL" 
    database="<Database_Name>"
    host="<localhost>" 
    password="<Database_Password>" 
    path="jtds-1.2.2-9.jar"
    port="1433" 
    user="<Database_User>">
      <DataSource name="DefaultRelationalDatabase"/>
      <DataSource name="ObjectQueueDatabase"/> 
      <DataSource name="rules:Rules"/>
      <DataSource name="uicomp:UIComponent"/>
      <DataSource name="Conversation"/>
      <DataSource name="ecr:ECR"/>
      <DataSource name="msg:Messaging"/>
      <DataSource name="SessionDatabase"/>
      <DataSource name="flow:Flow"/>
      <DataSource name="StagingDatabase"/>
      <DataSource name="call:Call"/>
      <DataSource name="sso:SSO"/>
      <DataSource name="StatDatabase"/>
      <DataSource name="AuditLogDatabase"/>
      <DataSource name="LockDatabase"/>
      <DataSource name="portal:Portal"/>
      <DataSource name="bp:CPM"/>
      <DataSource name="bireport:DefaultRelational"/>
      <DataSource name="inform:Inform"/>
    </RelationalDatabaseConnection>
    
    <RelationalDatabaseConnection 
    adapter="Oracle11g" 
    database="<Database_Name>"    
    host="<localhost>" 
    password="<Database_Password>" 
    path="ojdbc14.jar" 
    port="1521" 
    user="<Database_User>">
      <DataSource name="BI_1_BI_Database"/>
    </RelationalDatabaseConnection>
    <FileStorageConnection 
    adapter="Generic" 
    dataDirectory="C:\file\attachment\data"      
    temporaryDirectory="C:\file\attachment\temp">
      <DataSource name="Attachment"/>
      <DataSource name="FileExport"/>
    </FileStorageConnection>
  </DataSourceConnections>
  <ChannelConnections>
      <MessageQueueConnection channel="ErrorQueue" password="<JMS_Queue_Password>" user="<JMS_Queue_User_ID>/>
      <MessageQueueConnection channel="RetryQueue" password="<JMS_Queue_Password>" user="<JMS_Queue_User_ID>"/>
      <MailConnection channel="Mail" from="<outmail@example.com>" inFolder="INBOX" inHost="<mailserver.example.com>" inProtocol="pop3" outHost="<outmailserver.example.com>" outProtocol="smtp" outReadTimeout="60000" outWriteTimeout="60000" password="<Email_Password>" user="<user.name@example.com>"/>
      <HTTPConnection authentication="basic" channel="ExchangeEWSSender" password="<HTTP_User_Password>" secure="true" trust="<certificateFile>" url="https://<host>/ews/Exchange.asmx" user="<HTTP_User_ID>"/>
      <HTTPConnection authentication="none" channel="ExchangeEWSNotificationReceiver"/>
      <HTTPConnection channel="BESNotificationSender" password="<HTTP_User_Password>" secure="true" trust="<certificateFile>" user="BESPushTest"/>
      <HTTPConnection authentication="none" channel="JasperReportData"/>
      <HTTPConnection authentication="perimeter" channel="JasperServer"/>
      <HTTPConnection authentication="none" channel="NotificationUnsubscribeChannel" password="<HTTP_User_Password>"/>
      <FileConnection channel="ReportingOutputFileChannel" outgoingDirectory="C:\<file>\fileChannels\reporting\"/>
      <HTTPConnection channel="inform:ArticleSearch" trust="<certificate>" url="<url_provided_by_Grapevine6>"/>
      <HTTPConnection channel="rest:OpenAPI"/>
      <HTTPConnection channel="rest:REST"/>
      <HTTPConnection channel="rest:SelectionOptions"/>
      <HTTPConnection authentication="basic" channel="inform:RelatedObject" password="<password>" trust="<certificate>" url="<http://server.example.com:port>/nexj/channel/rest:REST" user="informUser"/>
   </ChannelConnections>
   <SOAConnections>
      <SOAConnection auth="perimeter" binding="context" service="nexj:act:ActivityPlan:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:act:ActTemplate:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:act:ApprovalObject:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:act:DocumentService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:act:Task:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:call:InboundCall:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:AssignmentModel:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:EntityParticipation:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:UserPerson:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:flow:FlowObject:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:flow:QuestionnaireService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:flow:SecurityDelegateService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:ilm:DistributeActionCommandClient:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:ilm:Lead:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:leaf:Leaflet:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:rules:CreateActivityPlanCommandClient:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:rules:CreateTaskCommandClient:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:rules:MessageActionCommandClient:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:rules:Rule:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:rules:SetActionCommandClient:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:Audit:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:Bulletin:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:ConversationService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:DataMatchService:1.0">
         <Properties>
            <Property name="system" value="#t"/>
         </Properties>
      </SOAConnection>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:DataMatchServiceConfiguration:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:DesktopBeaconPushService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:DesktopPushService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:DesktopStreamRefreshPushService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:EmailNotificationService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:MobilePushService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:PortalIntegration:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:PortletRegistry:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:Registry:1.0">
         <Properties>
            <Property name="system" value="#t"/>
         </Properties>
      </SOAConnection>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:SubscriptionEngineService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:UserRegistry:1.0">
         <Properties>
            <Property name="system" value="#t"/>
         </Properties>
      </SOAConnection>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:UserRegistryClient:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:ui:ObjectComponentClient:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:ui:UIComponent:1.0">
         <Properties>
            <Property name="system" value="#t"/>
         </Properties>
      </SOAConnection>
      <SOAConnection auth="perimeter" binding="context" service="nexj:sso:Authentication:1.0">
         <Properties>
            <Property name="system" value="#t"/>
         </Properties>
      </SOAConnection>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:Person:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:User:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:Household:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:Task:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:ui:WorkQueueItemRelatedObject:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:ScheduleItem:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:Note:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:crm:Interaction:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:soa:NotificationService:1.0"/>
      <SOAConnection auth="perimeter" binding="context" service="nexj:ui:UIComponentClient:1.0"/>
   </SOAConnections>
</Environment>

Using the environment file as a template with .properties files

You can use the example environment file above to create an environment file that can be used as a template for multiple environments. It would be similar to the example, but some of the values would be replaced with variables. For example, in the example environment file above, a relational database connection could be defined with the following settings:

XML
<RelationalDatabaseConnection adapter="MSSQL" database="finance" host="localhost" password="nexj" path="jtds-1.2.2-9.jar" port="1433" user="nexj">

In an environment file used as a template, it would be defined with the following settings instead:

XML
<RelationalDatabaseConnection adapter="${RelationalDatabaseConnection.Adapter}" database="${RelationalDatabaseConnection.DEF.Db.Name}${test.clone}" host="${RelationalDatabaseConnection.Db.Host}" password="${RelationalDatabaseConnection.Db.Password}" path="${RelationalDatabaseConnection.Db.Path}" port="${RelationalDatabaseConnection.Db.Port}" user="${RelationalDatabaseConnection.Db.User}">

You would then also need to create one or more .properties files that refer to specific databases used in different deployment environments. For example, you can create a DeploymentMSSQL.properties file that contains the following code:

XML
RelationalDatabaseConnection.Adapter=MSSQL
RelationalDatabaseConnection.DEF.Db.Name=finance
RelationalDatabaseConnection.Db.Host=localhost
RelationalDatabaseConnection.Db.Password=nexj
RelationalDatabaseConnection.Db.Path=jtds-1.2.2-9.jar
RelationalDatabaseConnection.Db.Port=1433
RelationalDatabaseConnection.Db.User=nexj
config=Deployment.environment

You could also create a DeploymentOracle.properties file that contains the following code:

XML
RelationalDatabaseConnection.Adapter=Oracle11g
RelationalDatabaseConnection.DEF.Db.Name=finance
RelationalDatabaseConnection.Db.Host=localhost
RelationalDatabaseConnection.Db.Path=ojdbc14.jar
RelationalDatabaseConnection.Db.Port=1521
RelationalDatabaseConnection.Db.User=nexj_dba
config=Deployment.environment

Note that both of these .properties files also specify the config setting, which refers to the environment file that is being used as a template.

All the settings described in this topic and in the Model Description Language Reference can be included in an .environment file used as a template, either with either variable or constant values.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.