Setup Requirements
1. Acadia Domain Values
If you have run the Acadia schema data file in Execute SQL and chosen the synchronization of the Acadia data, all of the necessary domain values will be present in your system and no additional configuration is required. These include Message Template domain values and the CollateralWFInterface domain, with value ACADIA. This domain is necessary to enable pop up messages.
Data Audit
Data audit is provided for InterestStatementReconciliation details.
2. Workflow Setup for AcadiaSoft
From Calypso Navigator or (Main Entry), select Configuration > Workflow.
Below is a partial sample of an Acadia workflow.
The workflows can be imported using the Calypso Workflow window. It is located in the folder <calypso home>/docs/calypso-acadia/samples/workflow. When importing, make sure that the workflow name in the .wf file matches the name of the workflow configuration.
The available files are:
• | PSEventMessage_MC_NOTIFICATION.wf |
• | PSEventMessage_ACADIA_INCOMING.wf |
• | AcadiaSoft_Triparty.wf |
• | AcadiaSoft_SVA_Initial.wf |
• | AcadiaSoft_SVA.wf |
• | Acadiasoft_Expected.wf (for Expected Margin Calls) |
• | AcadiaSoft_CSA.wf |
The Acadia workflow contains some hard coded actions. In Calypso, in order to change the object status, an action needs to be applied to the object. The status can be customized or transitions added, but these action names cannot be modified.
The hard coded actions are as follows:
Name of Action |
Triggered by |
Direction |
Description |
---|---|---|---|
AGREE_EXPOSURE |
AgreeMarginCallMessage |
Incoming |
When Calypso receives an AgreeMarginCall message, the system saves the Agreed Amount and applies the AGREE_EXPOSURE action to the entry. |
CANCEL_DISPUTED |
CancelDisputeMarginCallMessage |
Incoming |
When Calypso receives a CancelDisputeMarginCall message, the system resets all dispute columns, saves the cancel reason, reason code and comment and applies the CANCEL_DISPUTE action to the entry. |
CANCEL_AGREE |
CancelAgreeMarginCallMessage |
Incoming |
When Calypso receives a CancelAgreeMarginCall message, the system applies the CANCEL_AGREE action to the entry. |
CANCEL |
CancelMarginCallMessage |
Incoming |
When Calypso receives a CancelMarginCall message, the system resets all columns and applies the CANCEL action to the entry. |
DISPUTE |
DisputeMarginCallMessage |
Incoming |
When Calypso receives a DisputeMarginCall message, the system creates the dispute with the status fully_disputed, saves the dispute attributes (code, reason, comment), updates columns (CptyMTM, disputeMTM) and applies the DISPUTE action to the entry. |
RECEIVE |
CreateMarginCallMessage |
Incoming |
When Calypso receives a ReceivedMarginCall message, the system creates a new Margin Call Entry with Cpty amount and applies the RECEIVE action to the entry. |
PARTIAL_AGREE |
PartialAgreeMarginCallMessage |
Incoming |
When Calypso receives a Partial Agree Margin Call message, the system updates columns (Cpty Amount, MTM, Deliver Amount, Return Amount, Dispute Amount, Dispute Agreed Amount and Dispute MTM) and applies the PARTIAL_AGREE action to the entry. |
PLEDGE_ACCEPT |
PledgeAcceptMarginCallMessage |
Incoming |
When Calypso receives a PledgeAcceptedMarginCallMessage, the system applies the PLEDGE_ACCEPT action to the entry. |
PLEDGE_REJECT |
PledgeRejectMarginCallMessage |
Incoming |
When Calypso receives a PledgeRejectMarginCall message, the system saves the reject reason, reason code and reason comment on each pledge that is rejected, and applies the PLEDGE_REJECT action to the entry. |
PLEDGE_AMEND |
PledgeAmendMarginCallMessage |
Incoming |
When Calypso receives a PledgeAmendedMarginCall message, the system removes old allocations, creates new allocations from pledges in the message and applies the PLEDGE_AMEND action to the entry. |
PLEDGE_CANCEL |
PledgeCancelMarginCallMessage |
Incoming |
When Calypso receives a PledgeCancelMarginCall message, the system resets allocation attributes on each allocation (AMP_ID, AMP_MODIFYUSER, AMP_VERSION) and applies the PLEDGE_CANCEL action to the entry. |
PLEDGE |
PledgeMarginCallMessage |
Incoming |
When Calypso receives a PledgeMarginCall message, the system creates an allocation, checks eligibility for each pledge in the message and applies the PLEDGE action to the entry. If the pledge is ineligible, a task exception is created. |
PLEDGE_AUTO |
PledgeMarginCallMessage |
Incoming |
When Calypso receives a PledgeMarginCall message, if the pledgeSecurity type equals ISIN and the pledge_ID equals TRIPARTYALCT, the system does not create an allocation and applies a PLEDGE_AUTO action to the entry. |
INELIGIBLE_COLLATERAL |
PledgeMarginCallMessage |
Incoming |
When Calypso receives an ineligible pledge, the system creates a BO Message and applies the INELIGIBLE_COLLATERAL action to the message in order to separate technical errors (invalid status) and business errors (error status). |
UNKNOWN_SECURITY |
PledgeMarginCallMessage |
Incoming |
When Calypso receives an unknown pledge, the system creates a BO message and applies the UNKNOWN_SECURITY action to this message, then the message moves to PENDING_SECURITY status. |
UPDATE_ALLOCATION |
PledgeMarginCallMessage |
Incoming |
Once the user adds the ISIN for the security in Calypso, the user can then apply the action UPDATE_ALLOCATION on the message. Once the entry is re-loaded, the allocation appears in Collateral Manager and the message is moved to PROCESSED. |
UPDATE |
PartialDisputeMarginCallMessage |
Incoming |
When Calypso receives a PartialDisputedMarginCall message, the system creates the dispute with the status of Partial Disputed, updates all dispute attributes (Reason, Reason Code and Comment) and applies the UPDATE action to the entry in order to save all these attributes. |
FULLY_DISPUTE |
CreateMarginCallMessage |
Incoming |
When Calypso receives a CreateMarginCallMessage, if there is an entry already saved and the direction is the opposite of the Margin Call received, then the system creates a new margin call with the processing type FULLY_DISPUTE and the margin call goes to FULLY_DISPUTED status. A message dispute is automatically sent to the counterparty. |
FULLY_DISPUTE |
DisputeMarginCallMessage |
Incoming |
When Calypso receives a DisputeMarginCallMessage, if the entry has the processing type FULLY_DISPUTE, then the system applies a FULLY_DISPUTE action to the entry and the entry moves to FULLY_DISPUTED_REC. |
CANCEL |
Manual Action |
Outgoing |
On the Calypso side, if the user applies the CANCEL action to the Margin Call Entry, the system displays a dialog window allowing the user can specify the cancel code, cancel reason and cancel comment. The attributes are saved on the entry and sent to Acadia in the CancelMargin message. |
DISPUTE |
Manual Action |
Outgoing |
On the Calypso side, if the user applies the DISPUTE action to the Margin Call Entry, the system displays a dialog window allowing the user can specify the dispute code, dispute reason and dispute comment. The attributes are saved on the entry and sent to Acadia in the DisputeMargin message. |
PLEDGE_CHECK_AND_ACCEPT |
Manual Action |
Outgoing |
On the Calypso side, if the user applies the PLEDGE_CHECK_AND_ACCEPT action, the system displays a dialog window with all ineligible pledges, then the user can reject or accept the ineligible pledge. |
PLEDGE_REJECT |
Manual Action |
Outgoing |
On the Calypso side, if the user applies the PLEDGE_REJECT action to the Margin Call Entry, the system displays a dialog window allowing the user to specify the pledge reject code, reason and comment on each rejected pledge. The attributes are saved on the allocation and sent to Acadia in the PledgeRejectMargin message. |
UPDATE_EMC |
Manual Action |
Outgoing |
On the Calypso side, the system can use this action to update an Expected Margin Call message. |
The action PLEDGE_CHECK_AND_ACCEPT can be used when ineligible collateral has been sent in a Pledge message from Acadia. It is an alternative to PLEDGE_ACCEPT. When this action is used, the user is prompted with a soft warning if ineligible collateral has been pledged by the counterparty in the Acadia workflow. The message displayed allows the user to choose whether to proceed or not with the ineligible collateral. If the user accepts, the entry moves to the next status. If the user rejects, the entry continues in the old status.
This action checks the validators defined in domain "ACADIAAllocationValidators".
You can set the following validators:
• | AllocationPriceValidator |
• | ConcentrationLimitValidator to checks concentration limits. |
Please note that concentration limit check is not performed on full return cases when exposure changes are in the PO's advantage.
• | EligiblityAllocationValidator considers the cash allocations for validation. Allocations will be auto accepted / auto rejected only when the AutoAccept/AutoReject workflow rule is added to the workflow transitions. The criteria to auto accept or auto reject is defined in the Collateral Context window. But if the rules are not added to the workflow, the pledge needs to be manually rejected by checking its eligibility with the action PLEDGE_CHECK_AND_ACCEPT. |
• | FullAllocationValidator |
• | IncrementLotSizeValidator |
• | MinimumPurchaseAmountValidator |
• | SettleDateValidator |
• | TotalIssuedValidator |
Please refer to Calypso Collateral Configuration documentation - Collateral Context for details on all validators.
Multiple codes are supported for sending pledge messages. To determine which code to provide on the Acadia pledge message, the system follows this hierarchy:
• | If ISIN is present, send ISIN, as ISIN is the international standard |
• | If no ISIN is present, look for CUSIP |
• | If no CUSIP, look for SEDOL |
Instead of AGREE_EXPOSURE, you can choose AGREE_EXPOSURE_STP - with workflow rule AutoAgree - It checks that Collateral.Global_Required_Mrg = Collateral.Cpty_Amount or is within the specified tolerance if margin call contract attribute “Accept CP Amount in PO’s Favor” is checked.
2.1 MC_NOTIFICATION Message Workflow
The MC_NOTIFICATION workflow is available from Calypso Navigator > Configuration > Workflow > Workflow.
2.2 ACADIA_INCOMING Message Workflow
The ACADIA_INCOMING workflow is available from Calypso Navigator > Configuration > Workflow > Workflow.
Acadia Message Repository
By default ACADIA_INCOMING messages are only stored if the corresponding margin call entries are priced.
You can configure the system to store any ACADIA_INCOMING message with the following setup.
1. You can use the domain "AcadiaMessageStorageStatuses" to define the status of the margin call entries for which incoming messages should be stored (example NONE, PRICING). In other words, if the margin call entry is in status NONE or PRICING, the ACADIA_INCOMING message will be stored.
2. New transitions must be added to the ACADIA_INCOMING workflow to store the messages.
NONE - STORE - PENDING, no rule
PENDING - PROCESS - PROCESSED, no rule
3. The COLLATERAL workflow must be modified to process the incoming messages once the margin call entries are priced.
The following transitions need to be modified as below:
PRICING - PRICE - PRICED_NO_CALL, STP, rule CheckNoCall, needs to be changed to PRICING - PRICE - PRICE_NO_CALL, STP, rule CheckNoCall
PRICING - PRICE - PRICED_PAY, STP, rule CheckPay, needs to be changed to PRICING - PRICE - PRICE_PAY, STP, rule CheckPay
PRICING - PRICE - PRICED_RECEIVE, STP, rule CheckReceive, needs to be changed to PRICING - PRICE - PRICE_RECEIVE, STP, rule CheckReceive
PRICED_PAY - RECEIVE - RECEIVED, STP, no rule, needs to be changed to PRICED_PAY - RECEIVE - RECEIVED, STP, rule CheckAcadiaReceivedMessages - In case the counterparty cancels the margin call entry before it is priced, this rule will map the message from the counterparty if it is RECEIVED and will not map the cancellation message.
The following transitions need to be added:
PRICE_NO_CALL - CHECK_AND_UPDATE - PRICED_NO_CALL, STP, rule CheckMessageRepository
PRICE_PAY - CHECK_AND_UPDATE - PRICED_PAY, STP, rule CheckMessageRepository
PRICE_RECEIVE - CHECK_AND_UPDATE - PRICED_RECEIVE, STP, rule CheckMessageRepository
NONE - CANCEL - CANCEL
Process:
If there is a stored message, it is processed and mapped to processing / fully disputed, once margin call entry moves to PRICED_PAY / PRICED_RECEIVE / PRICED_NO_CALL.
If there is no stored message, even though CheckMessageRepository fails, the margin call entry move to PRICED_PAY / PRICED_RECEIVE / PRICED_NO_CALL.
When stored messages are processed, the expected behavior of the margin call entries is as follows.
• | PRICED_RECEIVE – Once stored the message is processed, pay margin call should get fully disputed. Margin call entry will move to CREATED status (PRICED_RECEIVE - CREATE - CREATED) |
• | PRICED_NO_CALL - Once the stored message is processed, pay margin call should get fully disputed. Margin call entry will remain in PRICED_NO_CALL status |
• | PRICED_PAY - Once stored the message is processed, margin call entry should move to RECEIVED status (PRICED_PAY - RECEIVE - RECEIVED) |
4. The Acadia Message Repository panel has been added to the Collateral Manager to display stored messages.
You can set the following attribute in the Collateral Context > Acadia > Acadia Processing tab:
ACADIA_MESSAGE_HISTORY_DAYS: Number of business days for which to display stored messages. Default is 1 for current business day.
2.3 Acadia Exceptions
You can configure the Task Station to view ACADIA_ERROR exceptions.
2.4 Triparty Acadia Workflow
A separate workflow should be created for Triparty Acadia contracts. The workflow is the same for Triparty and non-Triparty contracts until the pledge state.
Once the exposure has been agreed/partial agreed, the entry moves to:
AGREED_REC/AGREED – TRIPARTY_AUTO_PLEDGE – TRIPARTY_AUTO_PLEDGED (STP)
TRIPARTY_AUTO_PLEDGED – EXECUTE – EXECUTED (not STP, it is however possible to have intermediary steps to import allocations from the agent)
2.5 SVA Workflow
In the case where the SVA (Sole Valuation Agent) is PO, notification (expected call) messages are sent when the collateral is owed to the counterparty (message template CreateExpectedMarginCall).
If the counterparty owes collateral to the PO, the regular margin call message process applies (message template CreateMarginCall).
(1) PRICED_PAY – SEND_EMC – EMC_SENT (The notification is sent to the counterparty with numbers from the counterparty perspective.)
(2) EMC_SENT – UPDATE_EMC – EMC_SENT
(3) EMC_SENT – RECEIVE – RECEIVED (the CreateMarginCall message that the counterparty generates off the notification is sent to the PO)
(4) EMC_SENT – CANCEL_EMC – EMC_CANCELLED
(5) EMC_CANCELLED – PRICE - PRICING
Additionally, the following workflow rules can be used:
CheckEMC on transitions 1 & 2 – returns true if the PO is the Sole Valuation Agent and the GRM <0
CheckCreate on transition 5 – check the combination Direction/SVA to determine if the user is allowed to create a Margin Call
3. Message Setup
Below are samples of Acadia messages setup. To configure messages, from Calypso Navigator, select Configuration > Messages & Matching > Message Set-up.
Make sure that these messages are configured in your system.
4. Message Sender Setup
To view the Message Sender Configuration window, from Navigator, select Configuration > Messages & Matching > Message Sender.