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:
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 |