Installation Instructions for Hot Fix D05003

Linux for x64


Hot fix D05003 addresses the issue(s) in SAS Anti-Money Laundering 4.2 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/D05.html#D05003


D05003 is a "container" hot fix that contains the following "member" hot fixes which will update the software components as indicated. See the Container Hot Fixes section in the Maintenance Install Tool (MIT) Usage Guide for more information about container hot fixes.

C96003 for SAS Anti-Money Laundering Alert Generation 4.2
B74004 for SAS Anti-Money Laundering Investigation UI 4.2

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

This hot fix must be installed on each machine where the updated components of the product, listed above, are installed. The installation process will determine which components of SAS Anti-Money Laundering 4.2 are installed on each machine, and apply the appropriate updates.

If the updated 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.

The installer downloaded is D05003la.bin.

When downloading SAS 9.2 hot fix packages, you must choose to Save the hot fix to disk, then execute the install from the saved location. Attempting to install a hot fix directly from the download page results in the error documented in SAS Note 37104.

To install the hot fix:

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

$> chmod 755 D05003la.bin
2. Set your $DISPLAY environment variable
export DISPLAY=<your_node_name>:0
3. Execute D05003la.bin
<path_to_downloaded_file>/D05003la.bin
    For example:
./D05003la.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.

See the Maintenance Install Tool (MIT) Usage Guide for more details on the installation of hot fixes.


The content of this hot fix is listed in the hot fix manifest.


This completes the installation of D05003. You must perform any "Post-Installation Instructions" documented below to successfully complete the deployment of this hot fix.


POST-INSTALLATION INSTRUCTIONS

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

C96003 for SAS Anti-Money Laundering Alert Generation 4.2
B74004 for SAS Anti-Money Laundering Investigation UI 4.2


C96003 for SAS Anti-Money Laundering Alert Generation 4.2

Step 1: Run the required SQL code below based on your database, using the common user for the Knowledge Center (AMLCTR):

For MySQL:
MySQL requires two sets of code to be run.  You should use the AMLCTR user id to run the code below:

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 for each Business Unit (BU) directory. Note that the scenarioadmin.sas7bcat file does not need to be copied to the BU directory level since it will be shared by all BUs via the SASHELP library:

aml.sas
aml_agp.sas
batch_reports.sas
stage*.sas
postwl*.sas
wl*.sas
install.sas

from

<SASROOT>/samples/antimnylndda/

to

<AMLROOT>/custom/source/

sasmacr.sas7bcat
from

<SASROOT>/cmacros/antimnylndda/

to

<AMLROOT>/custom/source/

Step 3: Several AML scenarios were updated as part of this hotfix container. The updated scenarios will not be utilized until the modifications are made to the AML tables. The program %aml_update_scenarios, available by contacting Technical Support, can be used to make the appropriate updates.

NOTE: This process must be executed for each separate business unit that is configured at your site.

Edit the supplied program file, aml_update_scenarios.sas. At the beginning is a section that allows for customization of the specific scenarios to be updated and the location of the hotfix files. Edit this section as appropriate for your site:

/* --------------------------- */
/* START OF USER CONFIGURATION */
/* --------------------------- */

/* Scenarios to be added and location of updated scenario code */
%let scenario_list=SAS10008,SAS10079,SAS10080,SAS10082,SAS10085A,SAS10085B,SAS10085C;
%let source_location=!SASROOT/misc/antimnylndda/scenario/scenario_source;

/* ------------------------- */
/* END OF USER CONFIGURATION */
/* ------------------------- */

Once the changes have been saved, run the program by starting SAS using the autoexec file for the specific AML business unit. For example: 1) Run /Lev1/Applications/ AntiMoneyLaundering4.2//custom/config/autoexec.sas 2) In the Program Editor submit the following:
%include “/aml_update_scenarios.sas”;
%aml_update_scenarios;
The program will copy the hotfix files from the !SASROOT directory to the active code directory for the business unit. Also, the program will make modifications to the tables FSK_SEQUENCE, FSK_SCENARIO and FSK_SCENARIO_PARAMETER. Once these changes have been made, the new scenarios will run as part of the daily AML AGP process.

Back to Post-Installation list


B74004 for SAS Anti-Money Laundering Investigation UI 4.2

Updates to the SAS Anti-Money Laundering Investigation UI 4.2 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:

Important Note

Prior to completing the steps below, it is important to back up any files that have been customized within the AML ear.
Rebuilding the ear and re-deploying the web app will result in any customizations being lost. You will use the backup copies of the following files to update any customizations after Step 1 below. You must edit the files in the new ear to re-implement customizations rather than copying the backup files into the new ear in order to prevent regression of updates contained in this hot fix.

Below are just some of the configurable files within the Investigation UI:

sas.financialservices.aml.<BU>.ear/WEB-INF/web.xml
sas.financialservices.aml.<BU>.ear/WEB-INF/classes/ApplicationResources.properties
sas.financialservices.aml.<BU>.ear/WEB-INF/classes/Administration.properties
sas.financialservices.aml.<BU>.ear/WEB-INF/classes/ApplicationResources.properties
sas.financialservices.aml.<BU>.ear/WEB-INF/classes/CustomApplicationResources.properties
sas.financialservices.aml.<BU>.ear/WEB-INF/classes/ldap.properties
sas.financialservices.aml.<BU>.ear/WEB-INF/classes/sasaml.config
sas.financialservices.aml.<BU>.ear/WEB-INF/lib/sas.financialservices.aml.jar/sasaml. (oracle, db2, teradata, mysql)
Please reference the SAS Anti-Money Laundering 4.2 System Configuration Guide, First Edition, section 9.4.1 for more detailed information on implementing customizations.

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 In the list of web applications, you will see an AML web application for each configured BU. You will need to rebuild and redeploy each of these BU web applications.

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.2 ear in <SASCONFIGDIR>/Web/Staging.
A backup of the original ear file will be placed in the directory below:

<SASCONFIGDIR>/Web/Staging/Backup

At this point, use the backup copies of files made prior to rebuilding the ear to reapply customizations.

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 installation of hot fix D05003 on Linux for x64.