Installation Instructions for Hot Fix C95001

Linux for x64


Hot fix C95001 addresses the issue(s) in SAS Anti-Money Laundering 4.1 on Linux for x64 as documented in the Issue(s) Addressed section of the hot fix download page:

http://ftp.sas.com/techsup/download/hotfix/HF2/B02.html#C95001


This hot fix contains updates to the following software components:

SAS Anti-Money Laundering Alert Generation 4.1 (C94001)
SAS Anti-Money Laundering Investigation UI 4.1 (C93001)

Before applying this hot fix, follow the instructions in SAS Note 35968 to generate a SAS Deployment Registry report, then verify that the appropriate product releases are installed on your system. The software components and release numbers should match the list of software components updated by the individual hot fix installers.


IMPORTANT NOTES

  1. Files delivered in this hot fix will be backed up during the installation process. However, it is good general practice to back up your system before applying updates to software.

  2. You must have Administrator Privileges on your CLIENT or SERVER machine.

  3. All currently active SAS sessions, daemons, spawners and servers must be terminated before applying this hot fix.

  4. This hot fix should be installed using the same userid who performed the initial software installation.


INSTALLATION


The installer downloaded is C95001la.bin. Copy C95001la.bin to each Linux for x64 machine on which SAS Anti-Money Laundering 4.1 components are installed.
To install the hot fix, on each machine:

1. Verify that the installation binary has execute permission. If it does not, use the chmod command to make it executable.

$> chmod 755 C95001la.bin
2. Set your $DISPLAY environment variable
export DISPLAY=<your_node_name>:0
3. Execute C95001la.bin
<path_to_downloaded_file>/C95001la.bin
    For example:
./C95001la.bin

This will initiate the installation wizard, which will guide you through the hot fix installation process. During the installation you will be prompted for the SASHOME location to be updated. You should provide the path to the top level SAS directory where the deploymntreg directory exists.

The installation process will determine which components of SAS Anti-Money Laundering 4.1 are installed on the machine, and apply the appropriate updates.

If components of this product are installed on multiple operating systems, you must download the hot fix for the appropriate operating system(s) and follow the installation instructions provided to complete the deployment of this hot fix.

See the Maintenance Installation Tool (MIT) documentation for more details on the installation of hot fixes.



POST-INSTALLATION INSTRUCTIONS

For each product installed, click the link to be redirected to post-installation instructions.

SAS Anti-Money Laundering Alert Generation 4.1
SAS Anti-Money Laundering Investigation UI 4.1

SAS Anti-Money Laundering Alert Generation 4.1


Step 1: Run the required SQL code below based on your database:

For MySQL:
MySQL requires two sets of code to be run.

Set One:  Alter the FSK_ROUTING_CONSTRAINT table:

ALTER TABLE AMLCTR.FSK_ROUTING_CONSTRAINT
    MODIFY OPERATOR_DESC CHAR(6);

UPDATE AMLCTR.FSK_ROUTING_CONSTRAINT
    SET OPERATOR_DESC='NOT IN'
    WHERE OPERATOR_DESC='NOT';

Set Two:  Create and populate views 

CREATE VIEW BANK1CORE.fsc_cash_flow_transaction_view
(
 account_key,
 account_number,
 branch_key,
 date_key,
 time_key,
 transaction_type_key,
 transaction_key,
 currency_amount,
 transaction_reference_number,
 transaction_description,
 security_name,
 deal_number,
 bank_name_1,
 role_desc_1,
 bank_name_2,
 role_desc_2,
 bank_name_3,
 role_desc_3,
 bank_name_4,
 role_desc_4,
 bank_name_5,
 role_desc_5,
 bank_name_6,
 role_desc_6,
 segment_id
)
as
SELECT
  CFF.account_key,
  ACC.account_number,
  CFF.branch_key,
  CFF.date_key,
  CFF.time_key,
  CFF.transaction_type_key,
  CFF.transaction_key,
  CFF.currency_amount,
  TD.transaction_reference_number,
  TD.transaction_description,
  TD.security_name,
  TD.deal_number,
  BD.BANK_NAME as bank_name_1,
  CFBB.Role_Desc as role_desc_1,
  BD2.BANK_NAME as bank_name_2,
  CFBB2.Role_Desc as role_desc_2,
  BD3.BANK_NAME as bank_name_3,
  CFBB3.Role_Desc as role_desc_3,
  BD4.BANK_NAME as bank_name_4,
  CFBB4.Role_Desc as role_desc_4,
  BD5.BANK_NAME as bank_name_5,
  CFBB5.Role_Desc as role_desc_5,
  BD6.BANK_NAME as bank_name_6,
  CFBB6.Role_Desc as role_desc_6,
  TD.segment_id
FROM
  AMLCORE.FSC_CASH_FLOW_FACT CFF
  join AMLCORE.FSC_TRANSACTION_DIM TD on CFF.transaction_key = TD.transaction_key and CFF.segment_id = TD.segment_id
  join AMLCORE.FSC_ACCOUNT_DIM ACC ON CFF.account_key = ACC.account_key and CFF.segment_id = ACC.segment_id
  left join  AMLCORE.FSC_CASH_FLOW_BANK_BRIDGE CFBB on CFF.TRANSACTION_KEY = CFBB.TRANSACTION_KEY and CFBB.SEQUENCE_NUMBER = 1 AND CFF.segment_id = CFBB.segment_id
  left join AMLCORE.FSC_BANK_DIM BD on CFBB.BANK_KEY = BD.BANK_KEY and CFBB.SEGMENT_ID = BD.SEGMENT_ID
  left join  AMLCORE.FSC_CASH_FLOW_BANK_BRIDGE CFBB2 on CFF.TRANSACTION_KEY = CFBB2.TRANSACTION_KEY and CFBB2.SEQUENCE_NUMBER = 2 AND CFF.segment_id = CFBB2.segment_id
  left join AMLCORE.FSC_BANK_DIM BD2 on CFBB2.BANK_KEY = BD2.BANK_KEY and CFBB2.SEGMENT_ID = BD2.SEGMENT_ID
  left join  AMLCORE.FSC_CASH_FLOW_BANK_BRIDGE CFBB3 on CFF.TRANSACTION_KEY = CFBB3.TRANSACTION_KEY and CFBB3.SEQUENCE_NUMBER = 3 AND CFF.segment_id = CFBB3.segment_id
  left join AMLCORE.FSC_BANK_DIM BD3 on CFBB3.BANK_KEY = BD3.BANK_KEY and CFBB3.SEGMENT_ID = BD3.SEGMENT_ID
  left join  AMLCORE.FSC_CASH_FLOW_BANK_BRIDGE CFBB4 on CFF.TRANSACTION_KEY = CFBB4.TRANSACTION_KEY and CFBB4.SEQUENCE_NUMBER = 4 AND CFF.segment_id = CFBB4.segment_id
  left join AMLCORE.FSC_BANK_DIM BD4 on CFBB4.BANK_KEY = BD4.BANK_KEY and CFBB4.SEGMENT_ID = BD4.SEGMENT_ID
  left join  AMLCORE.FSC_CASH_FLOW_BANK_BRIDGE CFBB5 on CFF.TRANSACTION_KEY = CFBB5.TRANSACTION_KEY and CFBB5.SEQUENCE_NUMBER = 5 AND CFF.segment_id = CFBB5.segment_id
  left join AMLCORE.FSC_BANK_DIM BD5 on CFBB5.BANK_KEY = BD5.BANK_KEY and CFBB5.SEGMENT_ID = BD5.SEGMENT_ID
  left join  AMLCORE.FSC_CASH_FLOW_BANK_BRIDGE CFBB6 on CFF.TRANSACTION_KEY = CFBB6.TRANSACTION_KEY and CFBB6.SEQUENCE_NUMBER = 6 AND CFF.segment_id = CFBB6.segment_id
  left join AMLCORE.FSC_BANK_DIM BD6 on CFBB6.BANK_KEY = BD6.BANK_KEY and CFBB6.SEGMENT_ID = BD6.SEGMENT_ID
WHERE TD.segment_id = 'BANK1KCTR';

CREATE VIEW BANK1CORE.fsc_account_event_transaction_view
(
  account_key,
  account_number,
  branch_key,
  date_key,
  time_key,
  transaction_type_key,
  transaction_key,
  currency_amount,
  transaction_reference_number,
  transaction_description,
  security_name,
  deal_number,
  bank_name_1,
  role_desc_1,
  bank_name_2,
  role_desc_2,
  bank_name_3,
  role_desc_3,
  bank_name_4,
  role_desc_4,
  bank_name_5,
  role_desc_5,
  bank_name_6,
  role_desc_6,
  segment_id
)
as
SELECT
  AEF.account_key,
  ACC.account_number,
  AEF.branch_key,
  AEF.date_key,
  AEF.time_key,
  AEF.transaction_type_key,
  AEF.transaction_key,
  0,
  TD.transaction_reference_number,
  TD.transaction_description,
  TD.security_name,
  TD.deal_number,
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  TD.segment_id
FROM
  AMLCORE.FSC_ACCOUNT_EVENT_FACT AEF
  join AMLCORE.FSC_ACCOUNT_DIM ACC ON AEF.account_key = ACC.account_key and AEF.segment_id = ACC.segment_id
  join AMLCORE.FSC_TRANSACTION_DIM TD on AEF.transaction_key = TD.transaction_key and AEF.segment_id = TD.segment_id
WHERE TD.segment_id = 'BANK1KCTR';

CREATE VIEW BANK1CORE.fsc_account_trade_transaction_view
(
  account_key,
  account_number,
  branch_key,
  date_key,
  time_key,
  transaction_type_key,
  transaction_key,
  currency_amount,
  transaction_reference_number,
  transaction_description,
  security_name,
  deal_number,
  bank_name_1,
  role_desc_1,
  bank_name_2,
  role_desc_2,
  bank_name_3,
  role_desc_3,
  bank_name_4,
  role_desc_4,
  bank_name_5,
  role_desc_5,
  bank_name_6,
  role_desc_6,
  segment_id
)
as
SELECT
  ATF.account_key,
  ACC.account_number,
  ATF.branch_key,
  ATF.trade_date_key as date_key,
  ATF.execution_time_key as time_key,
  ATF.transaction_type_key,
  ATF.transaction_key,
  ATF.principal_amount as currency_amount,
  TD.transaction_reference_number,
  TD.transaction_description,
  TD.security_name,
  TD.deal_number,
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  TD.segment_id
FROM
  AMLCORE.FSC_ACCOUNT_TRADE_FACT ATF
  join AMLCORE.FSC_ACCOUNT_DIM ACC ON ATF.account_key = ACC.account_key and ATF.segment_id = ACC.segment_id
  join AMLCORE.FSC_TRANSACTION_DIM TD on ATF.transaction_key = TD.transaction_key and ATF.segment_id = TD.segment_id
WHERE TD.segment_id = 'BANK1KCTR';

INSERT INTO amlctr.fsk_ui_table
( table_ui_name, table_expression_text, table_label_desc, table_data_source_code, table_search_level_code, table_active_ind )
VALUES
(
  'transactionView:1','select transactionView.account_key, transactionView.account_number, transactionView.branch_key,
   transactionView.date_key, transactionView.time_key, transactionView.transaction_type_key, transactionView.transaction_key,
   transactionView.currency_amount, transactionView.transaction_reference_number, transactionView.transaction_description,
   transactionView.security_name, transactionView.deal_number, transactionView.bank_name_1, transactionView.role_desc_1,
   transactionView.bank_name_2, transactionView.role_desc_2, transactionView.bank_name_3, transactionView.role_desc_3,
   transactionView.bank_name_4, transactionView.role_desc_4, transactionView.bank_name_5, transactionView.role_desc_5,
   transactionView.bank_name_6, transactionView.role_desc_6, transactionView.segment_id from fsc_cash_flow_transaction_view
   transactionView',
  'Transaction',
  'COR',
  'LIT',
  'Y'
);

INSERT INTO amlctr.fsk_ui_table
( table_ui_name, table_expression_text, table_label_desc, table_data_source_code, table_search_level_code, table_active_ind )
VALUES
(
  'transactionView:2',
  'union all select transactionView.account_key, transactionView.account_number, transactionView.branch_key, transactionView.date_key,
  transactionView.time_key, transactionView.transaction_type_key, transactionView.transaction_key, transactionView.currency_amount,
  transactionView.transaction_reference_number, transactionView.transaction_description, transactionView.security_name,
  transactionView.deal_number, '''', '''', '''', '''', '''', '''', '''', '''', '''', '''', '''', '''', transactionView.segment_id
  from fsc_account_event_transaction_view transactionView',
  'Transaction',
  'COR',
  'LIT',
  'Y'
);

INSERT INTO amlctr.fsk_ui_table
( table_ui_name, table_expression_text, table_label_desc, table_data_source_code, table_search_level_code, table_active_ind )
VALUES
(
  'transactionView:3',
  'union all select transactionView.account_key, transactionView.account_number, transactionView.branch_key, transactionView.date_key,
  transactionView.time_key, transactionView.transaction_type_key, transactionView.transaction_key, transactionView.currency_amount,
  transactionView.transaction_reference_number, transactionView.transaction_description, transactionView.security_name, transactionView.deal_number,
  '''', '''', '''', '''', '''', '''', '''', '''', '''', '''', '''', '''', transactionView.segment_id from fsc_account_trade_transaction_view
  transactionView',
  'Transaction',
  'COR',
  'LIT',
  'Y'
);



For Oracle:
ALTER TABLE FSK_ROUTING_CONSTRAINT
    MODIFY OPERATOR_DESC CHAR(6);

UPDATE FSK_ROUTING_CONSTRAINT
    SET OPERATOR_DESC='NOT IN'
    WHERE OPERATOR_DESC='NOT';
For DB2:
ALTER TABLE FSK_ROUTING_CONSTRAINT
    ALTER OPERATOR_DESC SET DATA TYPE CHAR(6);

UPDATE FSK_ROUTING_CONSTRAINT
    SET OPERATOR_DESC='NOT IN'
    WHERE OPERATOR_DESC='NOT';
For Teradata:
Create a temporary table, FSK_ROUTING_CONSTRAINT_NEW. Then:

INSERT INTO FSK_ROUTING_CONSTRAINT_NEW SELECT * FROM FSK_ROUTING_CONSTRAINT;
DROP TABLE FSK_ROUTING_CONSTRAINT;
RENAME TABLE FSK_ROUTING_CONSTRAINT_NEW TO FSK_ROUTING_CONSTRAINT;

UPDATE FSK_ROUTING_CONSTRAINT
    SET OPERATOR_DESC='NOT IN'
    WHERE OPERATOR_DESC='NOT';

Step 2: To fully implement this hot fix, you must manually copy the following files:

SAS10008.sas
from

<SASROOT>/misc/antimnylndda/scenario/scenario_source/

to

<AMLBASE>/common/scenario/scenario_source/

sasmacr.sas7bcat
from

<SASROOT>/cmacros/antimnylndda/

to

<AMLROOT>/custom/source/

Back to Post-Installation list

SAS Anti-Money Laundering Investigation UI 4.1


Updates to the SAS Anti-Money Laundering Investigation UI 4.1 provided in this hot fix require that Web Applications be rebuilt and redeployed. If this component is installed on Linux for x64, follow the steps below to rebuild and redeploy the web application:

Step 1: Re-build Web Application

In order for this step to execute correctly, the Metadata Server must be running.

1.1 Invoke the SAS Deployment Manager 9.2

From the SASDeploymentManager directory launch config.sh.
SAS Deployment Manager is installed in the following default location:

<SASHOME>/SASDeploymentManager/9.2

1.2 Select a language in the Choose Language box

1.3 Select Rebuild Web Applications

1.4 Select Configuration Directory or Enter the Configuration Directory and Level that needs to be updated

1.5 Specify Connection Information, including the sasadm User ID and Password

1.6 Select Anti-Money Laundering 4.1 as the Web Application to Rebuild

1.7 Verify the information on the Summary screen and select Start

1.8 Select Finish when the deployment is complete

This process will update the Anti-Money Laundering 4.1 ear in <SASCONFIGDIR>/Web/Staging.
A backup of the original ear file will be placed in the directory below:

<SASCONFIGDIR>/Web/Staging/Backup

Step 2: Re-deploy Web Applications

2.1 Re-deploy the web applications based on the instructions for the web application server you are using.

Back to Post-Installation list

This completes the deployment of hot fix C95001 on Linux for x64.