You are viewing the documentation for Blueriq 14. Documentation for other versions is available in our documentation directory.

Installation

The customerdata service can be installed using the installer. After installation, the configuration of the customerdata service can be found in the <blueriq installation home>\Services\blueriq-customerdata\conf folder.

Alternatively, you can install the customerdata service on of the supported platforms of Blueriq. The supported platforms for the customerdata service match the ones for the Runtime. The installation procedure also resembles the ones for the Runtime, basically it is deploying the WAR, configure a config location and the suitable JDBC driver. See Installing Runtime for details on each specific platform.

Although it is possible to deploy the Customerdata Service in the same JVM as the Blueriq Runtime, we recommend, at least for acceptance and production environments, to deploy it on its own JVM or depending on the throughput of the application, on its own server.

System requirements

Minimal

2 CPU cores
256 MB Heap

2 CPU cores
512 MB Heap

Table of contents



Configuration

The customerdata service is required by the Customerdata Client component, so when this component is used the following needs to be configured first.

External config location

For supplying configuration from an external location you need to configure the spring.config.additional-location for the application. See the Config location section for your application platform on the page Installing Runtime

Create database

Scripts to create the required database content are provided for the following databases:

  • SQL Server
  • Oracle
  • H2 (we do not recommend using a H2 database in production environments)

Use the appropriate scripts to create the tables on your database.

Datasource configuration

For the customerdata service to work, a datasource needs to be configured in application.yml. This file is placed in the following folder by the installer: <Blueriq installation folder>\Services\customerdata\conf.

Since Blueriq 10.7 the application.yml(or application.properties) is renamed to blueriq-customerdata-odata-service-v1.yml (or blueriq-customerdata-odata-service-v1.properties)

application.yml or application.properties. Since Blueriq 10.7 blueriq-customerdata-odata-service-v1.yml or blueriq-customerdata-odata-service-v1.properties
#######################################################################
## datasource configuration                                          ##
#######################################################################
blueriq:
  customerdata:
    datasource:
      customer-data-sql-store:
        url: <url>
        username: <username>
        password: <password>
        driver-class-name: org.h2.Driver
        validation-query: SELECT 1
        testWhileIdle: true
        timeBetweenEvictionRunsMillis: 5000

#######################################################################
## Security configuration                                            ##
##                                                                   ##
## Here you can override the default username/password               ##
#######################################################################  
spring:
  security:
    user:
      name: <username>
	  password: '{noop}<password>'

hibernate:
  dialect: org.hibernate.dialect.H2Dialect
  hbm2ddl:
    auto: validate
  id:
    new_generator_mappings: true
  show_sql: false
  use_nationalized_character_data: true

We recommend setting a validation query so that when a database connection is lost due to a network failure for instance, it can be recovered once the network is restored. The validation query is database specific, the query below works with SQL Server (and H2), for Oracle use SELECT 1 FROM DUAL. For more information on configuring datasources, see How to configure BasicDataSource Configuration Parameters.

For additional datasource configuration please see the #DATASOURCE section in the Spring property documentation


Supported dialects:

  • org.hibernate.dialect.SQLServer2012Dialect (for SQL Server)
  • org.hibernate.dialect.Oracle12cDialect (for Oracle)
  • org.hibernate.dialect.H2Dialect (for H2) (we do not recommend using a H2 database in production environments)

Supported hbm2ddl.auto values:

  • none
  • validate


 When using H2, which is not suitable for production environments, the hbm2ddl-auto setting needs to be set to none, as validate does not work for H2. Again, in production environments this setting should always be on validate.

JNDI

If you would like to use JNDI to configure your datasource, replace the blueriq.customerdata.datasource section in the application.yml described above with the following:

Since Blueriq 10.7 the application.yml(or application.properties) is renamed to blueriq-customerdata-odata-service-v1.yml (or blueriq-customerdata-odata-service-v1.properties)


Please note that when Jndi is your preferred resource configuration, the Customerdata Service needs differently named jndi resources for the customer-sql-store on the one hand, and the entity-event-manager on the other hand.


blueriq:
  customerdata:
    datasource:
      customerdata-sql-store:
        jndi-name: java:jboss/datasources/myCustomerdataSqlStoreJndiName

Database drivers

Depending on the underlying database, a specific driver needs to be installed on the application server as described on Configuring JDBC database drivers.

Case Insensitive searching for oracle

For MSSQL searching through case data is case insensitive by default. The default collation for Oracle is case sensitive and because of that searching in Case Data is case sensitive.

For Oracle we created the possibility to enable case insensitive searching, for more information how to enable it see: How to enable case insensitive search on case data for Oracle

The feature toggle has to be set to true to enable this feature.

Example:

application.yml or application.properties. Since Blueriq 10.7 blueriq-customerdata-odata-service-v1.yml or blueriq-customerdata-odata-service-v1.properties
blueriq:
  customerdata:
    oracle:
      case-insensitive-search-enabled: true

Endpoint per aggregate type

Since Blueriq 10.4 it became possible to have different endpoints per aggregate type. In the schematic overview below is shown how having multiple endpoints per aggregate looks like. The application.properties contains multiple connections per aggregate type, the customerdata properties contain the information to which data store the aggregate should be saved to.


application.properties

The following properties need to be set in the application.properties of the Blueriq Runtime:

application.properties
# Mandatory = default connection for every aggregate that does not have a custom connection
blueriq.customerdata-client.url=http://localhost:10097/customerdata/api/v1
blueriq.customerdata-client.username=blueriq
blueriq.customerdata-client.password=welcome

# Optional - Custom connection(s) per aggregate type
blueriq.customerdata-client.type.employee.url=http://localhost:20097/customerdata/api/v1
blueriq.customerdata-client.type.employee.username=blueriq
blueriq.customerdata-client.type.employee.password=welcome

blueriq.customerdata-client.type.departement.url=http://localhost:30097/customerdata/api/v1
blueriq.customerdata-client.type.departement.username=blueriq
blueriq.customerdata-client.type.departement.password=welcome

The properties above contain the default settings, which are set by the Installer. If afterwards these settings are customized in the customerdata service they need to be changed in the Runtime as well.

Send Events to a queue

See Aggregate CUD events