Acadia Installation

 

1. Installation

The AcadiaSoft interface is installed as part of the Calypso Installer when you select the AcadiaSoft MarginSphere interface:

 

Please refer to the Calypso Installation Guide for complete details on the Calypso Installer. If you are installing a Calypso Upgrade package, the instructions are also in the Calypso Installation Guide.

 

2. Architecture

The architecture is using a Polling mechanism that uses 3 main components:

  1. Acadia Message Engine
  2. Collateral Manager
  3. Sender Engine

Th e polling mechanism is not a real-time process. The engine polls AcadiaSoft every X seconds via API in order to receive all messages with the status "PENDING_ACK". (This parameter is set up in the acadia.polling.properties file, using the property acadia.polling.interval.)

When the Acadia Message Engine starts: 

There is a connection with the following gateways:
AcadiaPolling - This gateway allows messages to be split into individual messages when AcadiaSoft sends multiple messages, then sends them to the JMS processor
PollingToAcadia - The polling task sends all messages to this queue, the Acadia Message Engine listens to this queue and processes messages.
A polling task is initialized. This task sends an http GET request to AcadiaSoft and acknowledges all messages once they have been processed.

 Ⓘ   [NOTE: All properties referring to the polling are present in the acadia.polling.properties file]

 

Servers to Start

The following servers should be started in the order listed below:

Auth Server
Discovery Server
Gateway Server
Event Server
Data Server
Messaging Server
Engine Server including AcadiaMessageEngine
Calypso Navigator

 

3. Acadia Message Engine

This engine processes all incoming messages.

This engine uses the following properties to run and process messages:

AcadiaSoft error codes (acadia_error_code.properties) - Edit this file when AcadiaSoft adds new error codes
AcadiaSoft reason codes (acadia_reason_code.properties) - Edit this file when AcadiaSoft adds new reason codes
calypso_acadia_config.properties

The Acadia message engine needs to subscribe to PSEventAgreementStatement to create collateral agreements in AcadiaSoft Agreement Manager from Calypso as well as manage updates to the agreements in Calypso and send them to the Acadia Agreement Manager.

 

In acadia.polling.properties, change the value for the below properties:

polling.output.queue=queue/acadia

processor.input.queue=queue/acadia

 

4. Sender Engine

This engine is a core Calypso component, allowing messages to be sent to the AcadiaSoft MarginSphere.

 

5. Collateral Manager

The Acadia module has a dependency on the Collateral module. This component is the front end of the Acadia module. All incoming and outgoing messages are visible in the Notification tab when an entry is selected. This is also the interface available to view Margin Calls. It is possible to agree, dispute, accept or reject a pledge using Collateral Manager.

For more details, refer to the Collateral Manager documentation.

 

6. Password Encryption in Acadia Module

Acadia uses the Calypso solution provided in the calypso-infosec jar to decrypt the password.

Encryption in the Acadia engine properties file is mandatory for both Acadia Margin Call and Acadia Interest Statements.

The Acadia module manages three passwords: 

jms.connection.password for the connection to the JMS server
acadia.password credentials to access and contact AcadiaSoft MarginSphere

 

6.1 How to Use Encryption in Acadia

In the acadia.engine.properties file, specify an encrypted password in the acadia.password property.

An encrypted password can be generated using passwordProtectorCLI.bat/sh. The Acadia password needs to be encrypted using the Acadia user as the key.

For example, in the calypso_acadia_config.properties file below, acadia.user=userl.

Run the command below to pass the plain text password to encrypt:

passwordProtectorCLi.bat --key userl

 

#Prop for using over FILE SYSTEM Service Provider

#AcadiaSoft Credential

acadia.user=user1

acadia.password=<password>

acadia.message.option=

acadia.message.version=3.7

 

#Your proxy configuration

acadia.proxy.host=

acadia.proxy.port=

acadia.proxy.user=

acadia.proxy.password=

#Dispatcher def

dispatcher.batchingSize=1

dispatcher.msgTimeout=1000

dispatcher.class=acadia.preprocessor.JMSMessagePreprocessor

dispatcher.delegator=acadia.preprocessor.ACADIADispatcher

#Processor def

processor.batchingSize=1

processor.msgTimeout=1000

processor.class=acadia.processor.JMSMessageProcessor

processor.delegator=acadia.processor.ACADIAProcessor

processor.count.reconnect=3

processor.interval.reconnect=10

 

6.2 Encrypting a Password with Calypso infosec jar

The encrypted password needs to be generated.

Refer to the Calypso Install Guide for details on how to encrypt a password.

 

When acadia.crypt.password is set to true, jms.connection.password needs to be encrypted with the key being the normal text password.

 

7. Acadia Deployment for Kubernetes / Containerization

To simplify Kubernetes deployment for Acadia, the properties are shipped as part of the distribution. This gives the Ops team the ability to set system IT properties using system properties or an environment variable without having to build the Docker image.

Some files are hidden in the distribution.

A Property Provider is used to:

Use an engine parameter override
Fall back to use environment variable or system property override
Fall back to values in the property files

 

For On Premise, the property files are located in the <calypso_home>/docs/calypso-acadia/samples/props directory and need to be manually put in the <user_home> /Acadia/props directory.

When using a Container, it is possible to use the engine parameter override.

 

7.1 System IT Properties / Deployment Properties

These properties are in the properties file but it is possible to override them by either providing a system property or an environment variable.

acadia.server.name (default value https://uat.acadiahub.com/amp)
acadia.amserver.name (default value https://uat.acadiahub.com/agreement-manager-api)
acadia.user
acadia.password
acadia.proxy.host
acadia.proxy.port
acadia.proxy.user
acadia.proxy.password
acadia.crypt.password (boolean, default=false)
acadia.crypt.key (encryption key, default=calypso)
acadia.amp.mode = polling
acadia.hostname.check (default=true)
jms.url - points to CalypsoMessagingServer by default
jms.initial.context.factory (not used)
jms.queue.connection.factory (not used)
jms.connection.password - password for CalypsoMessagingServer
jms.connection.username - username for CalypsoMessagingServer

 

If acadia.proxy.host and acadia.proxy.port are not set, the system uses the system properties -Dhttps.proxyHost and -Dhttps.proxyPort if set.

 

7.2 Engine Properties / Application Administration

These properties are in an engine parameter and allow an application administrator to change the values without having to redeploy the entire application.

acadia.polling.interval
margincall.polling.auth.reConnect
margincall.polling.filterAgreement
margin.polling.referenceGroup
interest.polling.interest.enabled
dispatcher.batchingSize
dispatcher.msgTimeout
processor.batchingSize
processor.msgTimeout
processor.count.reconnect
processor.interval.reconnect
margincall.polling.retryConnect

 

7.3 Business Properties

These properties are not in a file but stored in the database as domain values.

acadia.message.affectedOrganizationAmpId
acadia.message.counterpartyContactEmail
acadia.message.counterpartyContactInfo
acadia.message.counterpartyContactName
collateral.context