In the Household Alert Details screen if FSC_HOUSEHOLD_DIM.HEAD_OF_HOUSEHOLD_NAME
and FSK_ALERT.PRIMARY_ENTITY_NAME contain null values, a null pointer exception
error such as the following is generated by the URLEncoder operation in _alert_5F_details.java:
[12/8/09 8:24:55:937 CST] 00000022 ServletWrappe E SRVE0068E: Uncaught
exception thrown in one of the service methods of the servlet:
/alert_details.jsp. Exception thrown : java.lang.NullPointerException
at java.net.URLEncoder.encode(URLEncoder.java:227)
at com.ibm._jsp._alert_5F_details._jspService(_alert_5F_details.java:1990)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:569)
The URLEncoder cannot handle the null pointer values that are returned by the SQL query for the Alert Details screen.
To work around this null value. For SAS Anti-Money Laundering 5.1, the query was modified to resolve this problem.
In the following example, the text string "--no name provided--" is used as the replacement string if FSC_HOUSEHOLD_DIM.HEAD_OF_HOUSEHOLD_NAME and FSK_ALERT.PRIMARY_ENTITY_NAME contain null values.
Example : COALESCE( primary_entity_name, "--no name provided--" )
#### Alert information
# Alert Details
sasaml.alert.sql= SELECT DISTINCT A.alert_id, A.alert_description,A.user_id,A.primary_entity_level_code,A.primary_entity_key,
A.scenario_id,A.money_laundering_risk_score, A.terror_financing_risk_score,A.run_date,A.create_date,A.alert_status_code,
COUNT (DISTINCT C.comment_id) AS CommentCount,COUNT (DISTINCT D.document_id) AS documentCount, COALESCE(A.primary_entity_name,
"No Name Provided") ,A.actual_values_text,lov.lov_type_desc,A.primary_entity_number,A.scenario_name,E.event_description,
COUNT (DISTINCT SAR.sar_id) ASSarCount,E.create_date as event_date FROM fsk_alert A LEFT JOIN FSK_SCENARIO S ON
A.scenario_id = S.scenario_id LEFT JOIN fsk_lov lov ON s.scenario_category_code = lov.lov_type_code AND lov.lov_type_name
= 'SCENARIO CATEGORY' LEFT JOIN FSK_ALERT_COMMENT C ON A.alert_id = C.alert_id AND (c.logical_delete_ind = 'N' OR
c.logical_delete_ind IS NULL) LEFT JOIN FSK_ALERT_DOCUMENT D ON A.alert_id = D.alert_id AND (d.logical_delete_ind = 'N' OR
d.logical_delete_ind IS NULL) LEFT JOIN (SELECT s.alert_id,s.sar_id,cntl.sar_status FROM SAR_ALERTS S JOIN sar_cntl cntl ON
s.sar_id = cntl.sar_id WHERE S.alert_id = ? AND cntl.sar_status != 'DL') SAR ON sar.alert_id = A.alert_id LEFT JOIN
(SELECT alert_id,event_description,create_date FROM fsk_alert_event WHERE alert_id = ? AND event_type_code = 'CLS') E ON
A.alert_id = E.alert_id WHERE A.alert_id = ? GROUP BY .alert_id,A.alert_description,A.user_id,A.primary_entity_level_code,
A.primary_entity_key, A.scenario_id,A.money_laundering_risk_score,A.terror_financing_risk_score,A.run_date,A.create_date,
A.alert_status_code,A.primary_entity_name,A.actual_values_text,lov.lov_type_desc,A.primary_entity_number,
A.scenario_name,E.event_description,E.create_date ORDER BY E.CREATE_DATE DESC
sasaml.accountKey.noProfile.sql= SELECT A.account_number, A.ACCOUNT_STATUS_DESC, A.account_open_date,
A.account_close_date,PRI_PTY.party_name, PRI_PTY.party_tax_id, PRI_PTY.residence_country_name, PRI_PTY.citizenship_country_name,
PRI_PTY.party_date_of_birth, A.mailing_address_1, A.mailing_address_2, A.mailing_city_name, A.mailing_state_name,
A.mailing_postal_code, A.mailing_country_name, PRI_PTY.phone_number_1, PRI_PTY.phone_number_2, A.product_line_name,
ANL.last_Activity_date, A.account_primary_branch_name, A.alternate_name, A.mailing_state_code, A.mailing_country_code,
A.account_key, PRI_PTY.industry_desc, A.account_currency_code,COALESCE(A.account_name,"No Name Provided"),
PRI_PTY.party_first_name, PRI_PTY.party_last_name, PRI_PTY.party_middle_name, PRI_PTY.party_type_desc, PRI_PTY.party_number,
PRI_PTY.party_key FROM FSC_ACCOUNT_DIM A left join fsc_account_analysis_dim ANL on A.account_number = ANL.account_number left
join fsc_party_account_bridge PRI_BR on A.account_key = PRI_BR.account_key and PRI_BR.role_key = 1 and TIMESTAMP_FORMAT(?,'YYYY-
MM-DD HH24:MI:SS') between PRI_BR.change_begin_date and PRI_BR.change_end_date left join fsc_party_dim PRI_PTY on
PRI_BR.party_key = PRI_PTY.party_key and TIMESTAMP_FORMAT(?,'YYYY-MM-DD HH24:MI:SS') between PRI_PTY.change_begin_date and
PRI_PTY.change_end_date where A.account_key=?
sasaml.householdKey.sql=Select A.household_number,A.street_address_1,A.street_address_2,A.street_city_name,A.street_state_name,
A.street_postal_code,A.street_country_name,A.phone_number_1,A.phone_number_2,COALESCE(A.head_of_household_name,
"No Name Provided"),A.street_state_code,A.street_country_code from FSC_Household_DIM A where A.household_key=?
sasaml.customerKey.sql= Select A.PARTY_number,COALESCE(A.party_name,"No Name Provided"), A.PARTY_TAX_ID,
A.RESIDENCE_COUNTRY_NAME, A.CITIZENSHIP_COUNTRY_NAME, A.PARTY_DATE_OF_BIRTH, A.occupation_desc, A.employer_name,
A.employer_phone_number, A.street_address_1, A.street_address_2, A.street_city_name, A.street_state_name, A.street_postal_code,
A.street_country_name, A.phone_number_1, A.phone_number_2, A.mailing_address_1, A.mailing_address_2, A.mailing_city_name,
A.mailing_state_name, A.mailing_postal_code, A.mailing_country_name, A.street_state_code, A.street_country_code,
A.party_id_state_code, A.party_first_name, A.party_last_name, A.party_middle_name, A.party_type_desc, A.party_identification_id,
A.party_identification_type_desc, A.citizenship_country_code, A.risk_classification, RA.proposed_risk_classification,
B.month_key, B.aggregate_assets_amount, B.total_wire_credits_amount, B.total_wire_debits_amount from FSC_PARTY_DIM A left join
FSK_PARTY_PROFILE_ALERT B on A.party_number=B.party_number and B.alert_id=? left join FSK_RISK_ASSESSMENT RA on
A.party_number=RA.party_number and risk_assessment_status_code = 'ACT' and RA.logical_delete_ind='N' where A.PARTY_key=?
Operating System and Release Information
| SAS System | SAS Anti-Money Laundering | Microsoft® Windows® for x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Microsoft Windows Server 2003 Datacenter Edition | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Microsoft Windows Server 2003 Enterprise Edition | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Microsoft Windows Server 2003 Standard Edition | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Microsoft Windows Server 2003 for x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Microsoft Windows Server 2008 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Microsoft Windows Server 2008 for x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Microsoft Windows XP Professional | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows 7 Enterprise 32 bit | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows 7 Enterprise x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows 7 Home Premium 32 bit | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows 7 Home Premium x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows 7 Professional 32 bit | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows 7 Professional x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows 7 Ultimate 32 bit | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows 7 Ultimate x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows Vista | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Windows Vista for x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| 64-bit Enabled AIX | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| 64-bit Enabled HP-UX | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| 64-bit Enabled Solaris | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| HP-UX IPF | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Linux | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Linux for x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
| Solaris for x64 | 4.2 | 5.1_M1 | 9.2 TS2M3 | 9.3 TS1M2 |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.