NexJ Logo

Updating configuration to deploy NexJ Reporting on a dedicated server

Follow the steps documented on this page if the following applies:

  • You previously deployed NexJ Reporting directly on your CRM server (are using "integrated Reporting"), and
  • You want to deploy NexJ Reporting on a dedicated infrastructure that consists of a Reporting server and a replicated CRM database 

Throughout this topic, NexJ CRM database refers to the database used by the DefaultRelationalDatabase data source on the NexJ CRM database server, and Reporting database refers to the database used by the DefaultRelationalDatabase data source on the Reporting database server.

In order to update the deployment configuration to use a dedicated Reporting server:

  1. Back up the NexJ CRM database.
  2. Restore the NexJ CRM database backup onto the Reporting database.

    1. When performing the restore, ensure that Overwrite the existing database (WITH REPLACE) is selected for MSSQL servers under Options.
    2. Truncate the NJNode table.
  3. Run bireport/meta/scripts/ReportingUninstallScript.sql against the NexJ CRM database.
  4. Configure the NexJ CRM server by making the following modifications to the NexJ CRM environment file:

    1. Ensure the Hosts tag exists, and the URL is linked to the Reporting database server as shown in the following example:

      <Hosts>
          <Host name="dai" trusted="true" url="<report.httpURL>"/>
      </Hosts>

      The Hosts tag must be immediately after the environment's root tag, mixins tag, or PKIKeyPairs tag, whichever comes last. Hosts tags are case sensitive.

      If you need to modify the URL for the Hosts tag after the initial server startup (for example, to change http to https), change the URL value in the Hosts tag, and reseed the portal for the change to be persistent, or make the update using an SQL query directly, and then restart the server nodes.

      The Hosts tag should be used instead of the httpReportURL : string tag that does not apply to ad hoc reports.

    2. Set the meta.bireport.isStandAlone property to false, as follows. This, together with value set for this attribute in the Reporting database server, ensures batch jobs run as usual with the reporting metadata mixed in.

      meta.bireport.isStandAlone="false"
    3. Set the meta.bireport.enabled property to false, as follows:

      meta.bireport.enabled="false"
    4. Add the reportadapter mixin. The following example shows how the mixin displays in the source:

      <Mixins>
          ...
          <Mixin namespace="nexj:model:dai:reportadapter" version="0.10.0+"/>
          ...
      </Mixins>
    5. Add the rptadapter:ReportingInstanceSender channel to the environment file for NexJ CRM; for example:

      <HTTPConnection channel="rptadapter:ReportingInstanceSender" connectionTimeout="100" password="${crm.reporting.http.receiver.passwd:}" url="${URL to Reporting Server/channel/bireport:ReportingInstanceSync/NexJ}" user="${crm.reporting.http.receiver.user:nexjsa}"/>
  5. Configure the Reporting server by making the following modifications to the Reporting environment file:
    1. Modify all the data sources to refer to the correct database names on the Reporting database server.
    2. Ensure the bireport:DefaultRelational data source exists in the data source connections list. The bireport:DefaultRelational and ObjectQueueDatabase data sources must be set to use a different database than other data sources.
    3. Add the meta.bireport.enabled property, in the following format:

      meta.bireport.enabled="true"
    4. Ensure the Hosts tag exists, and the URL links to the NexJ CRM database server as shown in the following example:

      <Hosts>
          <Host name="crm" trusted="true" url="<crm.httpURL>"/>  
      </Hosts>
      

      The Hosts tag must be immediately after the environment's root tag, mixins tag, or PKIKeyPairs tag, whichever comes last.

    5. Add the following channel:

      <HTTPConnection channel="report:RPCHTTPSender" password="${reportcrm.http.instanceSync.passwd:}" url="${crm.httpURL}/text" user="${reportcrm.http.instanceSync.user:nexjsa}"/>
    6. Add the following channel:

      <HTTPConnection channel="bireport:ReportingAttributeRecalculationReceiver"/>
    7. Remove the BI_1_BI_Database data source from the data source connections list.

    8. Set the meta.bireport.isStandAlone property to true, as follows: 

      meta.bireport.isStandAlone="true"
    9. Add the following channel:

      <HTTPConnection channel="bireport:ReportingInstanceSync" connectionTimeout="100" password="${reportcrm.http.instanceSync.passwd:}" url="${URL to Reporting Server/channel/rptadapter:ReportingSyncRequestReciever/NexJ}" user="${reportcrm.http.instanceSync.user:nexjsa}"/>
    10. If both the Reporting and CRM servers are deployed on the same VM or physical machine, ensure there are no port conflicts for the httpURL, ajp.port, and pushRedirectorURL properties. For example, if you are using the default ports 7080 for httpURL, 8009 for ajp.port, and 5080 for pushRedirectorURL for the NexJ CRM database server, avoid using the same ports for the Reporting database server.

  6. For the Reporting database server, recreate the ObjectQueueDatabase only.
  7. Run update NJVersion set loaded=0 for the Reporting database.
  8. Upgrade against * for the Reporting database.
  9. Run update NJVersion set loaded=0 for the NexJ CRM database.
  10. Upgrade against * for the NexJ CRM database.
  11. Start the NexJ CRM server.
  12. Start the Reporting server.

NexJ Reporting is set up as a dedicated server. When NexJ CRM is refreshed, the Reports workspace displays, and users with appropriate privileges can view and create ad hoc reports. You can use the NexJ Report Adapter to synchronize the servers for both Reporting and CRM for real-time updates. For more information, see Synchronizing the dedicated server by using NexJ Report Adapter.