Hot fix D05003 addresses the issue(s) in SAS Anti-Money Laundering 4.2 on Windows 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
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 D05003wn.exe.
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.
Note: If your Windows operating system is Windows Vista, Windows 7 or Windows Server 2008, it may be necessary to "right-click" D05003wn.exe and select "Run as administrator".
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.
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:
For Oracle: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 DB2:ALTER TABLE FSK_ROUTING_CONSTRAINT MODIFY OPERATOR_DESC CHAR(6); UPDATE FSK_ROUTING_CONSTRAINT SET OPERATOR_DESC='NOT IN' WHERE OPERATOR_DESC='NOT';For Teradata: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';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>\antimnylndda\sample
to
<AMLROOT>\custom\source\
from
<SASROOT>\antimnylndda\cmacros
to
<AMLROOT>\custom\source\
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:
/* --------------------------- */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/
/* 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\antimnylndda\sasmisc\scenario\scenario_source;
/* ------------------------- */
/* END OF USER CONFIGURATION */
/* ------------------------- */
%include “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./aml_update_scenarios.sas”;
%aml_update_scenarios;
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 Windows, 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.xmlPlease reference the SAS Anti-Money Laundering 4.2 System Configuration Guide, First Edition, section 9.4.1 for more detailed information on implementing customizations.
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)
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.exe.
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 Windows.