NexJ Logo

Data Bridge 3.5.x deployment

NexJ Data Bridge version 3.6.1 and later releases are compatible with CRM versions 8.8.8.X and later releases. Data Bridge version 3.6.0 and earlier releases are compatible with NexJ CRM version 8.8.8.X and later releases, up to version 22.09. Data Bridge version 3.6.0 and earlier releases are not compatible with NexJ CRM version 22.11 and later releases.

To verify Data Bridge compatibility with other versions of NexJ CRM, please consult your NexJ service representative.

Configuring your NexJ CRM server to work with Data Bridge

Before you can deploy Data Bridge 3.5.0, you must have the following prerequisites for NexJ CRM:

  • NexJ Bridge Adapter (nexj-meta-bridgeadapter*.jar provided in your Data Bridge release package)
  • JDK 8 or JDK 11

Setting up the NexJ CRM environment file

To set up the NexJ CRM environment file:

  1. In NexJ Studio, in the Deployment layer's Environment tab, open your environment file for the current NexJ CRM deployment.
  2. Ensure that the uowListenerEnabled attribute is set to "true" in the Environment tag. For example:
    <Environment … uowListenerEnabled="true" …>
  3. Add the NexJ Bridge Adapter mixin to the environment file as shown below:    

    <Environment … uowListenerEnabled="true" …>
        <Mixins> 
           <Mixin namespace="nexj:model:dai:bridgeadapter" version="{bridgeadapter mixin version}"/>
        </Mixins>
    ...
    </Environment>
  4. Add the following DataSource name to the same RelationalDatabaseConnection as DefaultRelationalDatabase is on:

    <DataSource name="brgadapter:BRGadapter"/> 
  5. Add the following required channel connection:

    The password should be set according to your specific environment requirements.

    <HTTPConnection channel="brgadapter:NexJBridgeSender" password="<password>" url="<DataBridgeURL/nexj/channel/brg:BridgeReceiver>" user="brgadmin"/>
  6. Add the following required channel connection:

    <HTTPConnection authentication="basic" channel="brgadapter:CRMReceiver" secure="true" trust="<bridgeTrust>"/>
  7. Save your changes.

Example NexJ CRM environment file

The examples provided in this topic are included for reference purposes only. You should not copy them and edit them for direct use.
<Environment ajp.port="portNumber" authDomain="NEXJQA.LOCAL" authService="HTTP/localhost.nexjsystems.local" batchEmailRecipientListEnabled="${crm.standalone.batchEmailRecipientListEnabled:false}" batchNotifications="${crm.standalone.batchNotifications:false}" birthdayMailerEnabled="${crm.standalone.birthdayMailerEnabled:false}" callRecordsEnabled="${crm.standalone.callRecordsEnabled:false}" clientPerfStatusEnabled="true" clientPerfStatusMobileRedCriteria="1500 45 400 30" clientPerfStatusMobileYellowCriteria="750 45 200 15" currencyConversionEnabled="${crm.standalone.currencyConversionEnabled:false}" dai.adapter.securityEnabled="${crm.standalone.dai.adapter.securityEnabled:true}" dai.adapter.softDeletedLoadEnabled="${crm.standalone.dai.adapter.softDeletedLoadEnabled:false}" debug="true" description="Local machine with the bootstrap container in the default location" emailDraftEnabled="${crm.standalone.emailDraftEnabled:false}" emailSignatureEnabled="${crm.standalone.emailSignatureEnabled:false}" hierarchySecurityEnabled="${crm.standalone.hierarchySecurityEnabled:false}" httpForbiddenEnabled="true" httpReportURL="${crm.standalone.reporting.httpURL}" httpURL="${crm.standalone.httpURL}" journalDirectory="tx${crm.standalone.test.clone}" location="ssh://qa-rpt-scrum2.nexjqa.local/opt/local/teee/node" materialDesign="${crm.standalone.materialDesign}" messagePort="portNumber" messageUser="brgadmin" meta.bireport.enabled="false" meta.bireport.isStandAlone="false" meta.test="true" nameChangeContextAudit="${crm.standalone.nameChangeContextAudit:true}" password="text:scrum166" persistentSession="true" port.offset="${crm.standalone.port.offset:${crm.standalone.test.clone}00}" previewThreshold="202400" pushPassword="text:nexj" pushRedirectorURL="${crm.standalone.pushRedirectorURL}" pushServerURLs="${crm.standalone.pushServerURLs}" pushType="${crm.standalone.pushType}" pushUser="brgadmin" readAudit="${crm.standalone.readAudit:none}" rpcPrivilege="InternalManage" ruleSLA="${crm.standalone.ruleSLA:false}" sampleData="${crm.standalone.sampleData}" secureTransport="false" tagsEnabled="${crm.standalone.tagsEnabled:false}" test="true" test.clones="${crm.standalone.cloneCount}" type="Generic" uowListenerEnabled="true" updateAudit="${crm.standalone.updateAudit:false}" user="root">
   <Mixins>
      <Mixin checksum="aaeef780" namespace="nexj:model:dai:bridgeadapter" version="0.1.1"/>
   </Mixins>
   <PKIKeyPairs>
      <PKIKeyPair keystore="MIIGqAIBAzCCBmIGCSqGSIb3DQEHAaCCBlMEggZPMIIGSzCCAyAGCSqGSIb3DQEHAaCCAxEEggMNMIIDCTCCAwUGCyqGSIb3DQEMCgECoIICsjCCAq4wKAYKKoZIhvcNAQwBAzAaBBRnyPrehCuV3Wb4hU9hEzWCtPv+DgICBAAEggKAJUDXEV49sgGoWtnQf1rPDHC9PWS7ZKvEo6+i038QRtfnsjkaUs34uq150e7wIDdO9ji87yfcBIooNn8ivteoLYg+NyW4WcK0unWMiFkZQJ/9KBwioTWmS0DzYnJlu4iyi7XfZKMkCEVQXW58tTFQbl1I2ltZy3y78GXAFZpaT6aNH0uzaWOtJ9CiNlYNDP44lk/zLjF7W0+vgAP/HkMfAg51HksnlWdYqDeo5NM65RIUZbHsV5Yeb1Ujz10k1Aq3k9ijZJC+9vnXop450v1UyI9L73Lqi8omBEsyeffy0spQDhmuipHbpJpsQUflMJTaIh0zFbbvPoqJQgbABc2fwFhmb3Fi4OjY7RBGLEbyM4TFs0AWuv1Y/vSK2iHQJnWh/9sBUvhbzBNGnLBascj9DB97zPtSrP2zK4yOBZQfqn7TZ/3NIHCaUD7mm5iFcSn/LZblagcM/2+7WMwFn8sLI5aYxkbt6k+vXXrHxSkkUqzIxxA/G+XhK87+aEPTNMn6pUHCMbZmkqpSVfkgN+JIk3aMM+NfHd0aH6VaVnM1KoR65luYqHA3liV1lB6Z5TC4tUAjTxUIJ1Ety3ObqMfLfDg3pogKbeeTg9Szjp0TgFrYhHaTYTqK+NaaDo7om7rwBrT3aQTzGQP0MqFfgm8KyrPvxycBmYeC7NFh1A7D14BEfjX6/omnz6yPz0S5bwM+Ezhl4Mr2y8+4GTD0qlGi+x38o59BIcajHjH936o5MOBsc9yUFY/5/QVKGW2cJWlaxHMuaGPKzmYkVrDRuLUz9/RGoGrfHKRUIaYitNsdV8Awec0QQfeaSM0uIGx3QB2ggUtM3z90cHFFblIaz/U/STFAMBsGCSqGSIb3DQEJFDEOHgwAbgBlAHgAagBzAGEwIQYJKoZIhvcNAQkVMRQEElRpbWUgMTM3MjM0OTQ3MzA1MjCCAyMGCSqGSIb3DQEHBqCCAxQwggMQAgEAMIIDCQYJKoZIhvcNAQcBMCgGCiqGSIb3DQEMAQYwGgQUIWVE1QtSE+kCPrqdRP/PED/NBF8CAgQAgIIC0DaDQtrT6jnf0Mk2P33R1qBQBIoxIXFu7cVtLg/KudRF6cX9MK/2EP5ibXBuADFiTt+AGUhlhLO7JGPstfaOe7r0nI93AYAERip56AdlT/uqbb1VtA8LIAfAi8L+1n6eTYJXb3s6F3RVnJEVtuL8IiQaq3ju1bIgdUW5WGJX2jtCmoF3iSprs4p8Tuot5Rk1WJ8yeQB1+xfjG8zgXw6BuxwDoUJldqNK9bfMTFar8NY4Qe6gsymEBiRVUg1/ideVXLgwqHELuyVjet2YqXGoaVdVo6kQMpBPk74sTgiTEgDtEXb2zEd8irSdFFqbFePEwaD8Zj2TnCdBQo5hTJrH2UFS3VdsGzQ2lHzc3DHwWh27nnS9zJtDHgiLSDxa/pDt/9PIgpQbFFNNurG3gFofxnCew2kPZxesvS50Uwc3r5nKiSvuaYhWa6oTaRZjxRsP2BdFyvRQZ9j0O/a7Xu2KSyTDY6nsz0jgbQAms3qjLmWxC3ny2ETX5nKkewogiNglH3Tw+z7NPKVh5JjcUNBfX3vbiVJL7MN4V6BwAtAtJMa63yfUCU8ZoaZVmgJsmlzxLqkzgQ5ZiadvQv14WBxjOJ6rvW4PDN4pbJ/ONxCL2FH/Vfe4zH3nkHSq8SwVvcRcGUTLRflJVjBbJaWXB9vBTj+DwT3osNnkUlU4s36eZFa9wW/R7rMaukt3D5K8QhzHTFlKVx/TsO4CX6JF3UX3oq91853NMUl0BJIa0Z683XXT3TJbXgbYZl7RDVkg9uzjEgCMsuzTS8ttCIb7bry1gGTXBacHdn5LWwNUCFr28nNndE9BhWbutThhWGg1v6AoU+SFpWUysk37NTm+ELYM+tYbd0FdEycJiRIx75Ee+cii81aP66silr6s5YVohl9ZarREvBzqV6hqgdASA/ebPh8vhfhbM81EkRrvCX3tEyp0C3amv/DuU14y/EA7ZZwAFDA9MCEwCQYFKw4DAhoFAAQUUe0JBNvAaT7Va76xsjSQqpK0gWEEFDqBp+YlxTCfXJjQipZKIzU+N9p/AgIEAA==" name="brgadmin" password="testPass"/>
   </PKIKeyPairs>
   <Hosts>
      <Host name="dai" trusted="true" url="${crm.standalone.reporting.httpURL}"/>
   </Hosts>
   <DataSourceConnections>
      <RelationalDatabaseConnection adapter="${crm.standalone.RelationalDatabaseConnection.Adapter}" database="${crm.standalone.RelationalDatabaseConnection.DEF.Db.Name}${crm.standalone.test.clone}" host="${crm.standalone.RelationalDatabaseConnection.Db.Host}" password="${crm.standalone.RelationalDatabaseConnection.Db.Password}" path="${crm.standalone.RelationalDatabaseConnection.Db.Path}" port="${crm.standalone.RelationalDatabaseConnection.Db.Port}" user="${crm.standalone.RelationalDatabaseConnection.Db.User}">
         <DataSource name="DefaultRelationalDatabase"/>
         <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="ObjectQueueDatabase"/>
         <DataSource name="AuditLogDatabase"/>
         <DataSource name="LockDatabase"/>
         <DataSource name="bp:CPM"/>
         <DataSource name="insights:Insights"/>
         <DataSource name="brgadapter:BRGadapter"/>
         <Fragments/>
      </RelationalDatabaseConnection>
      <FileStorageConnection adapter="Generic" dataDirectory="C:\NexJ\FileChannels\Attachment\data${crm.standalone.test.clone}" temporaryDirectory="C:\NexJ\FileChannels\Attachment\temp${crm.standalone.test.clone}">
         <DataSource name="Attachment"/>
         <DataSource name="FileExport"/>
      </FileStorageConnection>
   </DataSourceConnections>
   <ChannelConnections>
      <MailConnection channel="Mail" from="mailtest@nexjsystems.com" inFolder="INBOX" inHost="tor-ex10-hub.NEXJ2K10.LOCAL" inProtocol="pop3" outHost="tor-ex10-hub.NEXJ2K10.LOCAL" outProtocol="smtp" password="password" user="brgadmin-exc2010@nexj2k10.local"/>
      <HTTPConnection authentication="basic" channel="ExchangeEWSSender" password="text:NJ@test" secure="true" trust="-----BEGIN CERTIFICATE-----
MIIDgjCCAmqgAwIBAgIQbfAbtWyBgKpJidWP23lx5jANBgkqhkiG9w0BAQsFADBJ
MRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFjAUBgoJkiaJk/IsZAEZFgZuZXhqcWEx
GDAWBgNVBAMTD05KUUEtQ0VSVEFVVEhSVDAeFw0xNTAzMTMxMzUxMjZaFw00NTAz
MTMxNDAxMjVaMEkxFTATBgoJkiaJk/IsZAEZFgVsb2NhbDEWMBQGCgmSJomT8ixk
ARkWBm5leGpxYTEYMBYGA1UEAxMPTkpRQS1DRVJUQVVUSFJUMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkQIB46PCE+/FzJFm7TNU3AppBooGrjnXANnD
11SZoCGWIOW7QV0zUJtS6KmJrDPUg2bDzVMWCmn1GLd2+jBoW2UU0D+tvAJdKlwy
EowAcGrk3FkAIUz2dw2BVRRIhs31FNOBfoiQwbWaxr+wi477wTNTGH3rEndVYaoL
Ftjz/1nUEloeET+0xO+PTCwODtwya9ETIrA2WXj0pj+1qNG7OI5I4mM9vzdj5eC/
ID7pU1RsKa6dl63EFk2er2/ZBSCOPVYmcUXU8PaTCaGOL7xjrZV7w+aYnnPDq4dY
5e0GhSKOwsX/M/FlRxFItOyw/21jcf9wymQLh9E4c//0Nkw8MQIDAQABo2YwZDAT
BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
/zAdBgNVHQ4EFgQUzEbP7WP0ZV10IYbiMPkeYcYPu8EwEAYJKwYBBAGCNxUBBAMC
AQAwDQYJKoZIhvcNAQELBQADggEBAG1ScTrK9naXfI0H+uoco/6EUPt8J1ccaXUS
ht+Ianr7jXde3M9kwVoq9yyikDUxh22QJHpTfAQPAnPVk3hF6wVhDjNR+VoJ4GBr
Sq5iClrhWt6/JHZOC35eubDVtK51wG/vPaDW9XbsF6psG7Y2Yb0Zj6LOP+3PJezl
FHiDa2qJRm9r7nah1erv8qDPYBykvBfKOwJu9Wzg8xw+laUjX22xqGFIslXn0Ywy
UPqx1zm1qNqvgIv0hE1hacJw7aO/QzmXoSt18X1fCjdHJz0rigtenQ5LKvaofnkC
7SOxtFpOBWFOnwyH+yLSKqsmvAFgKdTsKSwb7OhPOOxP0u3EPks=
-----END CERTIFICATE-----
" url="https://tst-ex2016.nexjtest.local/ews/Exchange.asmx" user="nexj-sync@nexjtest.local"/>
      <HTTPConnection authentication="credential" channel="ExchangeEWSSender2" password="text:password" secure="true" trust="-----BEGIN CERTIFICATE-----
MIIFPzCCBCegAwIBAgIKUc6xvwAAAAAAGTANBgkqhkiG9w0BAQsFADBJMRUwEwYK
CZImiZPyLGQBGRYFbG9jYWwxFjAUBgoJkiaJk/IsZAEZFgZuZXhqcWExGDAWBgNV
BAMTD05KUUEtQ0VSVEFVVEhSVDAeFw0xNzA1MDMxODM2NDRaFw0yMjA1MDMxODQ2
NDRaMIGUMQswCQYDVQQGEwJDQTELMAkGA1UECBMCT04xEDAOBgNVBAcTB1Rvcm9u
dG8xGjAYBgNVBAoTEU5leEogU3lzdGVtcyBJbmMuMQswCQYDVQQLEwJJVDEVMBMG
A1UEAxMMbmV4anFhLmxvY2FsMSYwJAYJKoZIhvcNAQkBFhdpbmZyYXN0cnVjdHVy
ZUBuZXhqLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyyjwarK5y7PY
neJbVMrQil+ZTULm0DrE0dqEP90fKtmTzeXbGcgz/iUaC6JvDa3ZbrDSM7KD9Yg+
8QcntSh00Zd9RcFn5rkyqY7ZdZHg5qTO317eOKwz52gyrD8xdyclqX/R5G2MqSBF
/N8IA5Vap3Xk7oygKjXO7UJNzMXhYtcCAwEAAaOCAl8wggJbMA4GA1UdDwEB/wQE
AwIE8DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwJwYJKwYBBAGCNxUK
BBowGDAKBggrBgEFBQcDATAKBggrBgEFBQcDAjAdBgNVHQ4EFgQU5HvqD0b+Iiai
SvwaQQOWOq4Po+AwGQYDVR0RBBIwEIIOKi5uZXhqcWEubG9jYWwwHwYDVR0jBBgw
FoAUzEbP7WP0ZV10IYbiMPkeYcYPu8EwgdIGA1UdHwSByjCBxzCBxKCBwaCBvoaB
u2xkYXA6Ly8vQ049TkpRQS1DRVJUQVVUSFJULENOPVFBLUNFUlRBVVRILENOPUNE
UCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25m
aWd1cmF0aW9uLERDPW5leGpxYSxEQz1sb2NhbD9jZXJ0aWZpY2F0ZVJldm9jYXRp
b25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwgcIG
CCsGAQUFBwEBBIG1MIGyMIGvBggrBgEFBQcwAoaBomxkYXA6Ly8vQ049TkpRQS1D
RVJUQVVUSFJULENOPUFJQSxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1T
ZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPW5leGpxYSxEQz1sb2NhbD9jQUNl
cnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0
eTAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAxFHaCI75SSEN5+oqJ
pvxQbsvGB3XnINwkTLwNJxE38QtYcXN41RlTfGg9Us/xC8EHmDNsipvJvDR5L7Xl
pVKHPvphiqZxh23DPrQobwRlzOsvEyPI7MnmkdzRZjOMFxo1q6LsN2RUPTRn6bM0
MutVciC59Xf0fkdjvZZDEmitn3vPQGTT3z4LgR1Wsu3dt5onVgrEVV3oKzcogvEE
Ry9SjjsNsKF7gj7GLztxEHPmr33XRcmsxYbomfCsARm9IqErCwAGGpYAaf2fAsdC
Y21YBYT5SQyCsi2qwnz8AcF3KLm0g+1h4gQxSxW24jOPSKUn7tRvG9X5olPYmjHE
7fe0
-----END CERTIFICATE-----
" url="https://tor-qa-ex10cas1.nexjqa.local/ews/Exchange.asmx" user="nexj-sync@nexjqa.local"/>
      <HTTPConnection authentication="basic" channel="ExchangeEWSSender3" password="text:P@ssw0rd" secure="true" trust="-----BEGIN CERTIFICATE-----
MIIDhDCCAmygAwIBAgIQP9r58lKLsLlExMkY8ntPyjANBgkqhkiG9w0BAQUFADBC
MRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxGDAWBgoJkiaJk/IsZAEZFghuZXhqMmsx
MzEPMA0GA1UEAxMGMksxM0NBMB4XDTEzMDcwODEzMzYwMloXDTIzMDcyMDE2MTgw
MVowQjEVMBMGCgmSJomT8ixkARkWBWxvY2FsMRgwFgYKCZImiZPyLGQBGRYIbmV4
ajJrMTMxDzANBgNVBAMTBjJLMTNDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAOs8RztSEZWJcegega/WfST/occk2ar/aoQ6QUSHz6XnMBPCsq6AgcUk
yNIM0uQ8jWf1cyZ1e3q5x6FQK/3b0XCObkxFEVbaCwNUJUAJV9u6sWjS3MT3b55t
Xw8t6yn3RzkIyPyG5UQHIy52PWULRg1YzSCOTxD9DGcdL/I8g6PelvNAy9lyrOG5
RLWo1G4iDjA71vq2lKto7AND6j0MYwxjnV+TvIn4UWIay8eF5RShqFGIscMKCrss
jMKQF/1HYlEtz7dcbl2StFw0PRNt3h6Qd7kof/Qhbju08s7EoGS9u6NrrggQnLoZ
88YT8WXMLoicLRlXNONgjPKSBrlQILUCAwEAAaN2MHQwCwYDVR0PBAQDAgGGMA8G
A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFPbdKBnEXZwfSmAzTqfRsAQJfGuNMBAG
CSsGAQQBgjcVAQQDAgEBMCMGCSsGAQQBgjcVAgQWBBRKSt9Aiwvw1PNc6Adhy4xZ
crsJ7TANBgkqhkiG9w0BAQUFAAOCAQEAhOCamD8ILD0cMQiLOoMCWMwhQCrkJMXt
+ja1QXgwTJDW5zFLmChUTDtL4UhsOMfA1Yf1yH2CjkuwO9Frr6uwXumimd8htFcf
P17F1YukHq5sEYdyzzGPiaPbIkph7a7HSttnCK3Mwfc9Qkki+cpChg9hXDqG8c29
OnekJcULDEda6VDhLysQa23XjzA37P8nl2quw1nPLF1FkwhteEGMhmMsW5Onij5z
f+OYUFbUZSgheykFTZg9pYP07CObbzEKXZng2T3laQLMxMYs8Xq4w21Y1mJ3UhEV
Dun/DTIzA24/76FlrQ+wqPzlej32uLlPgiYAmh48OAKcFnJcRcYtIQ==
-----END CERTIFICATE-----
" url="http://sv-2k13-cas2.nexj2k13.local/ews/Exchange.asmx" user="nexjsync@nexj2k13.local"/>
      <HTTPConnection authentication="basic" channel="ExchangeEWSSender4" password="text:nj@123" secure="true" trust="-----BEGIN CERTIFICATE-----
MIIFNjCCBB6gAwIBAgIKaxNyPgAAAAAADjANBgkqhkiG9w0BAQsFADBJMRUwEwYK
CZImiZPyLGQBGRYFbG9jYWwxFjAUBgoJkiaJk/IsZAEZFgZuZXhqcWExGDAWBgNV
BAMTD05KUUEtQ0VSVEFVVEhSVDAeFw0xNjAxMjYxNjEzMDZaFw0yMTAxMjYxNjIz
MDZaMGsxCzAJBgNVBAYTAkNBMQswCQYDVQQIEwJPTjEQMA4GA1UEBxMHVG9yb250
bzEUMBIGA1UEChMLVFNUMiBFWDIwMTYxCzAJBgNVBAsTAklUMRowGAYDVQQDDBEq
Lm5leGp0ZXN0Mi5sb2NhbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AKEBzeo6Pb9x6zrDYlgFPLsKGGk2Ch7FE0imBGVspNrKsZ7vTBsUfRdLkfLgmYm7
rwnidB0RQsMBVZUMq2IzJCGrw0tegXtUeHQmjseEu9/QlklGmxgoq46kkq4LgNCC
8EVQ4zo+/sNGKfKIDuSRkgXmXp783anDxJ9/5W2/w+8EVJA2Uhx+RK01IZTSWzVA
wZCNOGEPC1fkQadl6GkAXKaayQBoO9Sb9e8GFMZzZT7sInbdHGY5d6oxDMpc3WNg
3HQ5BI0zoFEMMzRMv//I9dMLWvXhUR/X8cDc+KSqPqY4IDxMiECZ+Am54ge0SRMj
yPEg1au/n80EXZwyvkLEklECAwEAAaOCAfwwggH4MA4GA1UdDwEB/wQEAwIFoDAM
BgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQwq8f7aZLcq0iH/kR0GaenQfztjDAfBgNV
HSMEGDAWgBTMRs/tY/RlXXQhhuIw+R5hxg+7wTCB0gYDVR0fBIHKMIHHMIHEoIHB
oIG+hoG7bGRhcDovLy9DTj1OSlFBLUNFUlRBVVRIUlQsQ049UUEtQ0VSVEFVVEgs
Q049Q0RQLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENO
PUNvbmZpZ3VyYXRpb24sREM9bmV4anFhLERDPWxvY2FsP2NlcnRpZmljYXRlUmV2
b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2lu
dDCBwgYIKwYBBQUHAQEEgbUwgbIwga8GCCsGAQUFBzAChoGibGRhcDovLy9DTj1O
SlFBLUNFUlRBVVRIUlQsQ049QUlBLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2Vz
LENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9bmV4anFhLERDPWxvY2Fs
P2NBQ2VydGlmaWNhdGU/YmFzZT9vYmplY3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0
aG9yaXR5MA0GCSqGSIb3DQEBCwUAA4IBAQAt49hON6LUGGrpQP7QBTskrqHaGWT7
D8F1oiW45NRHKkQTlxWhTKm4MMljml9ULwRZd341fY+5tqkDXRYAJg4VeRSKp4p9
zX7zCMAmgB5luVvRts/a2teRoFxijqnxi2W00P1Dyh3KHCqD6IDRdNDglUN9idJl
9Cjzxqxk08pehWsXjprmpxEhm/CaYh6UV8Y1/dsqx4ZBConq8HqPJ+LnFf+jKqbJ
IunPb1oSzyNesUA/LP64Iz7lusRaubDym0viAAWFrOGPOkes1IfEsMdnol6Vp8Rj
8P4+Ofh4lD3VPnASWf2fCDhU5hhQRH9HFHzilMQ82B+ZWjS3O+Odo+kn
-----END CERTIFICATE-----
" url="https://tst2-2016exc1.nexjtest2.local/ews/Exchange.asmx" user="nexjsync@nexjtest2.local"/>
      <HTTPConnection authentication="basic" channel="ExchangeEWSSender5" password="text:P@ssw0rd" secure="true" url="https://sv-njdev2013-ex.nexjdev2013.com/ews/Exchange.asmx" user="nexj.sync@nexjdev2013.com"/>
      <HTTPConnection authentication="none" channel="ExchangeEWSNotificationReceiver"/>
      <HTTPConnection channel="BESNotificationSender" password="text:123456" secure="true" trust="-----BEGIN CERTIFICATE-----
MIIB8TCCAVqgAwIBAgIETfJn2DANBgkqhkiG9w0BAQUFADA9MQswCQYDVQQGEwJV
UzEbMBkGA1UEChMSUmVzZWFyY2ggSW4gTW90aW9uMREwDwYDVQQDEwhiZXNhZG1p
bjAeFw0xMTA2MTAxODUyMDhaFw0xNDAzMDYxODUyMDhaMD0xCzAJBgNVBAYTAlVT
MRswGQYDVQQKExJSZXNlYXJjaCBJbiBNb3Rpb24xETAPBgNVBAMTCGJlc2FkbWlu
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7tqaV8GiXgRksswmeHoie2YQ6
0Pmp4tsFhS2r2zMYUCHM5LkuxN80ymWUJe5Epviq4Jd/ZpaxtCmX6pMmn+dNEAc5
5FiyA8S0Pm4k7AZ8AiLHh0+JPrk+2CMzRizHhndSJA0y4w7Bql7UMtC1fTGbsRiB
KDdPrsDc9ybbyJThZwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADhSnyOZdo/Qgek7
opezBOY4GdO7OAK59WEt7NEr+Fzq0bItThzxl/E57EwKnHIGwIMDDM22JtDLfxOr
ZR+GdhLjDTOBwXuLMV91IO87tMOPRbbKHNRg1+cnq/z3LJR8cknYwzIamLRm2DWC
y60JQIEijM8NirLmIkol368sW5/c
-----END CERTIFICATE-----" user="BESPushTest"/>
      <HTTPConnection authentication="none" channel="JasperReportData"/>
      <HTTPConnection authentication="perimeter" channel="JasperServer"/>
      <HTTPConnection authentication="none" channel="NotificationUnsubscribeChannel" password="text:"/>
      <FileConnection channel="ReportingOutputFileChannel" outgoingDirectory="C:\NexJ\FileChannels\Reporting\"/>
      <HTTPConnection channel="insights:ArticleSearch" trust="-----BEGIN CERTIFICATE-----
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
rqXRfboQnoZsG4q5WTP468SQvvG5
-----END CERTIFICATE-----" url="https://uat.typecast6.com/api/v1/searchinterests?token=98c3b3be650c432eb6b7d4196f4115a1"/>
      <HTTPConnection channel="insights:ArticleTrackingUrl" trust="-----BEGIN CERTIFICATE-----
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
rqXRfboQnoZsG4q5WTP468SQvvG5
-----END CERTIFICATE-----" url="https://uat.typecast6.com/api/v1/getsurl?token=98c3b3be650c432eb6b7d4196f4115a1"/>
      <HTTPConnection authentication="basic" channel="brgadapter:CRMReceiver" secure="false"/>
      <HTTPConnection authentication="basic" channel="brgadapter:NexJBridgeSender" password="text:nexj" secure="false" url="http://qa-dtbrdg-scrum1.nexjqa.local:7080/nexj/channel/brg:BridgeReceiver" user="brgadmin"/>
   </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>

Example NexJ CRM properties file

config=Scrum.deployment
crm.RelationalDatabaseConnection.Adapter=MSSQL
crm.RelationalDatabaseConnection.BI.Db.Name=<databaseName>
crm.RelationalDatabaseConnection.DEF.Db.Name=<databaseName>
crm.RelationalDatabaseConnection.Db.Host=<hostName>
crm.RelationalDatabaseConnection.Db.Password=<password>
crm.RelationalDatabaseConnection.Db.Path=jtds-1.2.2-7.jar
crm.RelationalDatabaseConnection.Db.Port=<portNumber>
crm.RelationalDatabaseConnection.Db.User=<userName>
crm.callRecordsEnabled=true
crm.cloneCount=1
crm.deploy.location=c\:\\java\\container\\deploy-integrated
crm.hierarchySecurityEnabled=true
crm.http.authorizationDelegate.url=<URL>
crm.http.monitor.influxdb.url=
crm.httpAnonymousURL=/nexj/anon
crm.httpReportURL=<http://localhost:port/nexj>
crm.httpURL=<URL>
crm.pushRedirectorURL=<URL>
crm.pushServerURLs=<URL>
crm.pushType=streaming
crm.reporting.RelationalDatabaseConnection.Adapter=MSSQL
crm.reporting.RelationalDatabaseConnection.BI.Db.Name=<databaseName>
crm.reporting.RelationalDatabaseConnection.DEF.Db.Name=<databaseName>
crm.reporting.RelationalDatabaseConnection.Db.Host=<hostName>
crm.reporting.RelationalDatabaseConnection.Db.Password=<password>
crm.reporting.RelationalDatabaseConnection.Db.Path=jtds-1.2.2-7.jar
crm.reporting.RelationalDatabaseConnection.Db.Port=<portNumber>
crm.reporting.RelationalDatabaseConnection.Db.User=<userName>
crm.reporting.callRecordsEnabled=true
crm.reporting.cloneCount=1
crm.reporting.deploy.location=c\:\\java\\container\\deploy-integrated
crm.reporting.hierarchySecurityEnabled=true
crm.reporting.http.authorizationDelegate.url=<URL>
crm.reporting.http.monitor.influxdb.url=
crm.reporting.httpAnonymousURL=/nexj/anon
crm.reporting.httpReportURL=<URL>
crm.reporting.httpURL=<URL>
crm.reporting.pushRedirectorURL=<URL>
crm.reporting.pushServerURLs=<URL>
crm.reporting.pushType=streaming
crm.reporting.sampleData=true
crm.reporting.standalone.httpURL=<URL>
crm.reporting.test.clone=
crm.sampleData=true
crm.standalone.RelationalDatabaseConnection.Adapter=MSSQL
crm.standalone.RelationalDatabaseConnection.BI.Db.Name=<databaseName>
crm.standalone.RelationalDatabaseConnection.DEF.Db.Name=<databaseName>
crm.standalone.RelationalDatabaseConnection.Db.Host=<hostName>
crm.standalone.RelationalDatabaseConnection.Db.Password=<password>
crm.standalone.RelationalDatabaseConnection.Db.Path=jtds-1.2.2-7.jar
crm.standalone.RelationalDatabaseConnection.Db.Port=<portNumber>
crm.standalone.RelationalDatabaseConnection.Db.User=<userName>
crm.standalone.callRecordsEnabled=true
crm.standalone.cloneCount=1
crm.standalone.deploy.location=c\:\\java\\container\\deploy-integrated
crm.standalone.hierarchySecurityEnabled=true
crm.standalone.http.authorizationDelegate.url=<URL>
crm.standalone.http.monitor.influxdb.url=
crm.standalone.httpAnonymousURL=/nexj/anon
crm.standalone.httpReportURL=<URL>
crm.standalone.httpURL=<URL>
crm.standalone.pushRedirectorURL=<URL>
crm.standalone.pushServerURLs=<URL>
crm.standalone.pushType=streaming
crm.standalone.reporting.httpURL=<URL>
crm.standalone.sampleData=true
crm.standalone.test.clone=
crm.test.clone=

Setting up the databases

For an initial deployment of the NexJ Bridge Adapter on an existing NexJ CRM instance, you must create the brgadapter:BRGadapter data source by running the recreate command in the Data Load Tool in NexJ Studio. For subsequent deployments of the Bridge Adapter, generating and running the upgrade script may be required.

Reseed the object queue database for NexJ CRM when installing the Data Bridge Adapter. Use the following SQL step:

Update OQVersion set loaded = 0

By default, triggering a reseed of the NexJ CRM database, adds the brgadmin user name (Data Bridge specific user) to the model. If necessary another user name can be used and it requires the brdadapter:gBridgeUser privilege, which enables a Data Bridge user to communicate with NexJ CRM.

Configuring your Data Bridge server

The following information describes how to configure your Data Bridge server.

Setting up Data Bridge with basic authentication

Data Bridge should be initially configured with basic authentication. After your initial deployment, you can change your authentication configuration. For example, the Data Bridge 3.5.0 UI supports OAuth 2.0 authentication. 

The following are required to set up Data Bridge:

  • Data Bridge build package
  • Database setup script as generated through NexJ Studio.
  • ssl.keystore
  • JDK 8

For more information, see Setting up Model Server.

Initial database setup

  1. In NexJ Studio, select Run > Run tool > Database Schema Tool to set up the brg:DefaultRelational database.
  2. Under Options and in the Command field, select setup - generate and SQL script for setting up the database.
  3. To run the generated scripts against your database server, click Run.

Enabling advanced authentication methods

For more information, see:

Configuring the Data Bridge environment file

  1. In NexJ Studio, in the Deployment layer's Environment tab, open your environment file for the current Data Bridge deployment.
  2. Set the meta.dng.enabled flag to true.

  3. (Optional) To enable Data Bridge to access NexJ CRM model attributes that are not persisted in a database, and display them in the Advanced tab in the Add Fields dialog on the Create View page in the Data Bridge client application, set the meta.dng.useNonPersistedAttributes flag to true. This is an advanced use case and should only be done after consulting the NexJ project or support team.

    Also, the meta.dng.useNonPersistedAttributes flag must be set to true in order for the path attribute of the Attachments subject area to be shown in the Add Fields dialog.

  4. Add the required channel connections, modify the required URL, context root, and the trust certificate for the NexJ CRM server, as shown in the following example code.

    The default user name and password values for the brg:CRMSender channel should be set to brgadmin or the values for a NexJ CRM user that has the brdadapter:gBridgeUser privilege. The brg:CRMSender channel holds outgoing RPC requests to the NexJ CRM application. Specify the complete URL of the CRM API endpoint in the brg:CRMSender channel.

    The brg:KafkaSender channel is used for publishing Kafka messages.

    <KafkaConnection authentication="none" channel="brg:KafkaSender" servers="${kafka.server}">
             <SenderProperties>
                <Property name="schema.registry.url" value="${kafka.schema.registry}"/>
             </SenderProperties>
    </KafkaConnection> 
    <HTTPConnection channel="brg:CRMSender" password="brgadmin" trust="${crm.httpURL.trust}" url="${NexJCRMURL}/nexj/channel/brgadapter:CRMReceiver" user="brgadmin"/>
  5. Save your changes.

Example Data Bridge environment file

<Environment authDomain="NEXJSYSTEMS.LOCAL" authService="HTTP/localhost.nexjsystems.local" batchEmailRecipientListEnabled="false" batchNotifications="false" birthdayMailerEnabled="false" callRecordsEnabled="false" clientInsights="false" clientPerfStatusEnabled="true" clientPerfStatusMobileRedCriteria="1500 45 400 30" clientPerfStatusMobileYellowCriteria="750 45 200 15" clusterKeystore="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" clusterPassword="clusterpass" currencyConversionEnabled="false" debug="false" description="Local machine with the bootstrap container in the default location" distributed="${distributed:true}" dng.model.location="${dng.model.location:}" dng.sarea.augment.location="${dng.sarea.augment.location:}" dng.sarea.location="${dng.sarea.location:}" em2srSystemUserLogin="em2sr" em2srSystemUserName="Nexj EM2SR" em2srSystemUserPassword="U9;XpwM9" emailDraftEnabled="false" emailSignatureEnabled="false" emailToServiceRequest="false" hierarchySecurityEnabled="false" httpForbiddenEnabled="true" httpGZip="true" httpReportURL="${httpReportURL}" httpURL="${httpURL}" journalDirectory="tx" location="${location}" materialDesign="false" messageUser="brgadmin" meta.bridge.exportDirectory="${meta.bridge.exportDirectory://brg-export}" meta.bridge.isChunked="${meta.bridge.isChunked:false}" meta.bridge.pageSize="${meta.bridge.pageSize:1000}" meta.dng.enabled="${meta.dng.enabled:true}" meta.dng.useNonPersistedAttributes="${meta.dng.useNonPersistedAttributes:false}" meta.test="true" nameChangeContextAudit="true" password="${deploymentPassword}" persistentSession="true" pollPeriod="300000" port.offset="00" previewThreshold="202400" pushPassword="text:nexj" pushRedirectorURL="${pushRedirectorURL}" pushServerURLs="${pushServerURLs}" pushUser="brgadmin" readAudit="none" rest.configMetadata="CRMRestAPIConfig" rest.schemaBase="CRMSchemaBaseJSON" rest.version="1.0.0" rpcPrivilege="InternalManage" ruleSLA="false" sampleData="true" secureTransport="false" tagsEnabled="false" test="true" test.clones="1" theme="${theme:bridge}" type="Generic" uowListenerEnabled="true" updateAudit="false" user="root">
   <PKIKeyPairs>
      <PKIKeyPair keystore="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" name="brgadmin" password="testPass"/>
   </PKIKeyPairs>
   <Hosts>
      <Host name="dai" trusted="true" url="${httpURL}"/>
   </Hosts>
   <DataSourceConnections>
      <RelationalDatabaseConnection adapter="${RelationalDatabaseConnection.Adapter}" database="${RelationalDatabaseConnection.BI.Db.Name}" host="${RelationalDatabaseConnection.Db.Host}" password="${RelationalDatabaseConnection.Db.Password}" path="${RelationalDatabaseConnection.Db.Path}" port="${RelationalDatabaseConnection.Db.Port}" user="${RelationalDatabaseConnection.Db.User}">
         <DataSource name="AuditLogDatabase"/>
         <DataSource name="DefaultRelationalDatabase"/>
         <DataSource name="LockDatabase"/>
         <DataSource name="ObjectQueueDatabase"/>
         <DataSource name="SessionDatabase"/>
         <DataSource name="StatDatabase"/>
         <DataSource name="sso:SSO"/>
         <DataSource name="brg:DefaultRelational"/>
         <DataSource name="ecr:ECR"/>
      </RelationalDatabaseConnection>
   </DataSourceConnections>
   <ChannelConnections>
      <KafkaConnection authentication="${kafka.auth:none}" channel="brg:KafkaSender" password="${kafka.password}" secure="${kafka.secure:false}" servers="${kafka.server}" user="${kafka.user}">
         <SenderProperties>
            <Property name="schema.registry.url" value="${kafka.schema.registry}"/>
         </SenderProperties>
      </KafkaConnection>
      <MessageQueueConnection channel="ErrorQueue" password="nexj" user="brgadmin"/>
      <MessageQueueConnection channel="RetryQueue" password="nexj" user="brgadmin"/>
      <MailConnection channel="Mail" from="mailtest@nexjsystems.com" inFolder="INBOX" inHost="tor-ex10-hub.NEXJ2K10.LOCAL" inProtocol="pop3" outHost="tor-ex10-hub.NEXJ2K10.LOCAL" outProtocol="smtp" outReadTimeout="60000" outWriteTimeout="60000" password="password" user="brgadmin-exc2010@nexj2k10.local"/>
      <HTTPConnection channel="rest:OpenAPI"/>
      <HTTPConnection channel="rest:REST"/>
      <HTTPConnection channel="rest:SelectionOptions"/>
      <HTTPConnection authentication="basic" channel="brg:CRMSender" password="${crm.brg.password}" secure="${crm.secure:true}" trust="${crm.httpURL.trust}" url="${crm.httpURL}/channel/brgadapter:CRMReceiver" user="${crm.brg.user}"/>
   </ChannelConnections>
   <SOAConnections>
      <SOAConnection auth="basic" service="nexj:soa:Audit:1.0"/>
      <SOAConnection auth="basic" service="nexj:soa:UserRegistryClient: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:UserRegistry: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>
   </SOAConnections>
</Environment>

Preparing a shared filesystem

When Data Bridge is deployed in a distributed (clustered) application environment, it is necessary to provide a shared filesystem location, such as a NAS disk, that will be accessible to all Data Bridge application server nodes. A shared filesystem directory must be configured for each of the .environment file variables mentioned below:

Environment propertyExample directory pathDescription
dng.model.location/nexj/bridge/metaclassMetaclass Path – This refers to the file path from where the data engine metaclass is being loaded.
dng.sarea.location/nexj/bridge/sareaSubject Area Path – This refers to the file path from where the subject areas are being loaded.
dng.sarea.augment.location/nexj/bridge/augmentSubject Area Augment Path - This refers to the file path from where the subject area augments are being loaded.
meta.bridge.exportDirectory/nexj/bridge/exportThe directory where exported CSV files will be saved to.

Output file parameters

The delimited files that are generated from snapshots that use the File (Delimited) publishing target have the file extension that you have configured for delimited files. Use the environment file flags to configure the defaults for delimited file format settings as described in the following table, and then you can change these settings using Data Bridge System Admin Console, as described at Using the Global Settings workspace.

FlagValue
dng.csvDelimiterThe delimiter used for delimited file exports.
dng.csvIsQuotedThe value is set to True to surround strings in delimited files with quotation marks.
dng.csvQuoteCharacterIf strings are quoted, this character will be used.
dng.csvShowHeaderThe value is set to True to display the delimited file header in exported files.
meta.bridge.csvFileExtensionThe delimited file extension to export to.
meta.bridge.exportDirectoryThe absolute path of the output directory (for example, C:\demo).
meta.bridge.isChunkedThe value is set to True to enable the export process to be multi-threaded for better performance, which will produce multiple file chunks, each containing a page of data, as a result.
meta.bridge.pageSize

For Kafka snapshots and delimited file snapshots this flag governs the request page size when data is retrieved from CRM. When isChunked = #t, each snapshot file chunk will contain an approximately equal number of records.

The allowed range of values is 1 - 4096.

Configuring the Data Bridge properties file

The following example shows properties that are included in a Data Bridge properties file.

Example Data Bridge properties file

config=Scrum.environment
dng.csvDelimiter=,
dng.csvIsQuoted=true
dng.csvQuoteCharacter="
dng.csvShowHeader=true
dng.model.location=/nexj/bridge/metaclass
dng.sarea.augment.location=/nexj/bridge/augment
dng.sarea.location=/nexj/bridge/sarea
httpURL=<URL>
httpReportURL=<URL>
location=ssh\://<localhost>/opt/local/teee/node
pushRedirectorURL=<URL>
pushServerURLs=<URL>
RelationalDatabaseConnection.Adapter=MSSQL
RelationalDatabaseConnection.BI.Db.Name=<databaseName>
RelationalDatabaseConnection.DEF.Db.Name=<databaseName>
RelationalDatabaseConnection.Db.Host=<hostName>
RelationalDatabaseConnection.Db.Password=<password>
RelationalDatabaseConnection.Db.Path=jtds-1.2.2-7.jar
RelationalDatabaseConnection.Db.Port=<portNumber>
RelationalDatabaseConnection.Db.User=<userName> 
meta.bridge.csvFileExtension=csv
meta.bridge.exportDirectory=/nexj/bridge/export
meta.bridge.isChunked=true
meta.bridge.pageSize=4096
meta.dng.useNonPersistedAttributes=true
crm.httpURL=<URL>
kafka.server=10.10.20.114\:9092
kafka.schema.registry=http\://10.10.20.114\:8081
deploymentPassword=<password>

Advanced configuration

You can configure advanced settings relating to functionality of the CRM Data Bridge Adapter and Data Bridge Server in their respective System Admin Consoles.

Configuring the NexJ CRM Data Bridge Adapter

You can configure the Data Bridge Adapter on the Statistics page in NexJ CRM System Admin Console. Navigate to the Statistics page in NexJ CRM System Admin Console, select nexj.finance > Administration > DataBridgeAdapter > Replication, and configure the required settings, which are shown in the following screenshot.

NexJ CRM System Admin Console Statistics page

Data Bridge SQL query timeout

The Bridge Query Timeout parameter is the maximum query time period for invocations from the Data Bridge server, and by default it is set at 90 seconds. You can provide a different value.

The Bridge Query timeout will apply to any SQL queries that Data Bridge executes in NexJ CRM and will effectively overwrite the SQL query timeout configured in CRM for Data Bridge queries only. Any other CRM queries will remain subject to the SQL query timeout (typically 30 seconds) configured in CRM.

Enabling or disabling the Data Bridge Adapter

For information about the Data Bridge Adapter Enabled parameter, see Setting up Data Bridge.

Error handling of failed CRM event notifications from the NexJ CRM Data Bridge Adapter

You can configure the exponential backoff and retry settings for messages that failed to get delivered to Data Bridge.

The NexJ CRM Data Bridge Adapter is responsible for sending notifications of CRM data change events to Data Bridge. If changes fail to synchronize from CRM to Data Bridge due to a transient condition (for example, a network service interruption), they will be queued and retried. The rate at which such failed transactions will be retried is controlled by the "exponential backoff" configuration described below.

To configure the following backoff and retry settings, navigate to the Statistics page in NexJ CRM System Admin Console, select nexj.finance > Administration > DataBridgeAdapter > Replication, and enter a new number in the associated Value field:

By default, the initial wait to retry time is 30 seconds, which will increase by one minute until a maximum 600 second interval is reached. There is a maximum of 10 message failures. This equates to about 1 hour of retries.

  • Maximum backoff retries (maximum number) - the number of times a notification message retry is attempted
  • Maximum backoff wait time (in seconds) - the maximum wait time between retries
  • Minimum backoff wait time (in seconds) - the minimum wait time between retries (the first retry will be this value and subsequent retries will add a minute)
  • Retry of Real-Time Notifications - enter Y to attempt a retry of notification messages or N to not attempt a retry
Failed CRM event notifications will be queued up and retried on brgadapter:RealTimeStreamingQueue. Permanently failed messages are routed to brgadapter:RealTimeStreamingErrorQueue.

Configuring the Data Bridge Server

You can configure the Data Bridge Server in Data Bridge System Admin Console.

Data Bridge System Admin Console Statistics page

For more information, see Error handling when retrieving CRM data from Data Bridge and Using Data Bridge.

Error handling when retrieving CRM data from Data Bridge

After receiving a change notification from NexJ CRM, Data Bridge will attempt to retrieve the necessary data from CRM. If Data Bridge fails to successfully read data from CRM due to a transient condition (for example, a network service interruption), the changes will be queued and retried. The rate at which such failed transactions will be retried is controlled by the "exponential backoff" configuration described below.

To configure the following backoff and retry settings, navigate to the Statistics page in Data Bridge System Admin Console, select nexj.bridge > Administration > DataEngine > Replication, and enter a new number in the associated Value field:

By default, the initial wait to retry time is 30 seconds, which will increase by one minute until a maximum 600 second interval is reached. There is a maximum of 10 message failures. This equates to about 1 hour of retries.

  • Maximum backoff retries (maximum number) - the number of times a notification message retry is attempted
  • Maximum backoff wait time (in seconds) - the maximum wait time between retries
  • Minimum backoff wait time (in seconds) - the minimum wait time between retries (the first retry will be this value and subsequent retries will add a minute)
Failed transactions will be queued up and retried on brg:ProcessQueue.

Next step

Exporting NexJ CRM metadata as JSON