EagleML Release Notes - October 2017

This release uses XSD Revision 270

There are four overlay files that are currently packaged as part of the EagleML monthly release. Please refer to About EagleML Overlays for specific details and impact to you.

Enhancements

EagleML

Improved Entitlement List Extract for Access to All Entities
The ENTITYENTITLEMENTLISTEXTRACT did not return records for groups with access to all entities.
Expanded ENTITYENTITLEMENTLISTEXTRACT to use the following logic: the group_info value of the group set in the filter is checked and if group_info=1 (group has access to all entities), entitlement filter is disabled

This issue was tracked as Item #153347.

Removed Q_RECET_FREQ_TRANS and Modified Conditions for Q_RESET_DOW Lookups
Adjustments were required in the xml-ref_issuevarrate_mi.xml rule to enhance lookup functionality.
The Q_RECET_FREQ_TRANS lookup was removed and the condition for Q_RESET_DOW was modified. The AND (:tag97:='I' OR :tag97:='X' OR :tag97:='S') condition was removed, since tag97 is not mapped in this rule, and changed to StringLength( :schd_types: ) > 0.
The value which is sent to tag 1102 on the Q_RESET_DOW panel was changed from const_eagle to tag 1102.

Modified code is below:

<LOOKUP NAME="Q_RESET_DOW" CONDITION="StringLength( :schd_types: ) > 0" INMAP="1102=tag1102,1165=schd_types_code_cat,1256=NAME_EXACT,1176=schd_types" OUTMAP="1123=1177" REUSERESULTS="1" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-lcodeval.htm" />

This issue was tracked as Item #153575.

Provided Ability to Perform Additional Filtering Through User Populated EagleML Parameters
The ability to limit and control the data in WRHSGLDETAILPOSTINGEXTRACT by Sector, Total Fund, and Share Class filters was added.
The extract_filter_gl_balances.inc filter, used in the rule extract_warehouse_gl_detail_posting.inc include, was added to Warehouse GL Detail Posting extract:
1. SelectView
- Possible Values: TOTALFUND, CLASS, SECTOR
2. SelectViewType
- Possible values: ALL, INDIVIDUAL
Available if SelectView = CLASS or SECTOR
3. ClassSectorId
Possible values: values for Share Class or Sector
Available if SelectView = CLASS or SECTOR and ClassSectorId = INDIVIDUAL

This issue was tracked as Item #153649.

Adjusted NAV_CURRENT and PRICE into the Field_Name Logic of xml-ref_exchangeprice

The logic in the priceList and varFieldName variables did not include NAV_CURRENT AND PRICE tags.

Two new types of PRICE status updates were introduced:
- PRICE
- NAV_CURRENT
To update their statuses the database was extended so that the following lookup would be able to get the FieldId properly:

<LOOKUP NAME="query_field_id" CONDITION="stringlength(:varFieldName:) > 0" INMAP="1769=varFieldName" OUTMAP="varFieldId=4870" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-field_id.htm" />

This issue was tracked as Item #153795.

Stand-Alone Security Resolution Process for SMF Objects and Reference Objects Added
The security resolution process is embedded in Eagle streams, such as the eagle_ml_2-0_in_xml_generic_smf stream. Those streams not only perform security resolution, they write to the database as well. A stand-alone security resolution process for SMF objects and reference objects that could be executed without performing a database update was requested.

Additional logic was added to the SMF extract to enable support for
- AssetIds
- ResolutionOptions
- BattingOrder
parameters by setting ActionType parameter to ‘SINGLEQUERY’

Rules updated:
1. extract_smf.xml:
2. task_reporter.xml:
3. extract_sec_resolution.inc - was created.This include contains mapping of security resolution task parameters
4. match_all_new_record_check.inc ,match_all_sec_resolution.inc, security_resolution_generic.inc
Error processing was changed.
- RC = 1 – unhandled exception: For any Eagle errors not already accounted for
- RC = 3 – not found
- RC = 200 – multiple security aliases found for criteria supplied

This issue was tracked as Item #154116.

All Fields of ESTAR_INCOME_ACTIVITY Added to ACCRUEDINCOMEEXTRACT
A limited list of fields from ESTAR_INCOME_ACTIVITY was requested to be added to ACCRUEDINCOMEEXTRACT (and EagleML object)

All the fields from ESTAR.ESTAR_INCOME_ACTIVITY have been added to the ACCRUEDINCOMEEXTRACT extract. IncomeActivity.model (XSD) was updated with new fields.

This issue was tracked as Item #154448.

Added 30DaySecYield Flag to Provide Additional Fields to the WRHSNAVMULTIEXTRACT
The ability to provide 30 Day SEC Yield data through the WRHSNAVMULTIEXTRACT from an outbound perspective was unavailable. This enhancement required a table join between HOLDINGDBO.NAV_MUTLI and ESTAR.ESTAR_SECYLD_30DAY by which the following are retrieved from the ESTAR.ESTAR_SECYLD_30DAY table:
SEC_YLD_TAX_EQ_WITH_WVR_REIM
SEC_YLD_TAX_EQ_WOUT_WVR_REIM
SEC_YLD_WITH_WVR_REIM
SEC_YLD_WOUT_WVR_REIM

The Include30DaySECyield flag was added to the WRHSNAVMULTIEXTRACT with the following parameters:
- Include30DaySecyieldFlag – Y: the new model containing ESTAR_SECYLD_30DAY fields would be included.
- Include30DaySecyieldFlag – N: ESTAR_SECYLD_30DAY fields would be skipped (default).

In order to ensure functionality, the flag requires both IncludeReportDetails and Include30DaySecYieldFlag to be set to Y.

The XSD was updated to include the new model, EstarSecYld30Day.model in the eagle-ml-h-shared-2-0.xsd.

This issue was tracked as Item #154741.

Enhanced Handling the Update of Synthetic Security in the secmastersynthetic.inc Include
The mapping for fields such as currency_code, settlement_currency, and INCOME_CURRENCY were mapped referencing incorrect variables which did not reach the database. There was a discrepancy in the references of fields mapped between the ADDSECMASTER call for Update of Synthetic and Add Synthetic.

The code was enhanced in the CHANGE SYNTH section of the eagle_default\in\xml\include\secmastersynthetic.inc include.

  <LOOP CONDITION="Atoi(:tag7100:)>0" TYPE="WHILE">
    <COL TAG="1767" EXPRESSION="'C'" />

<... SKIPPED ...>

    <COL TAG="synth1079" EXPRESSION=":tag1418:" />
    <COL TAG="synth1080" EXPRESSION=":tag85:" />
    <COL TAG="synth1081" EXPRESSION=":tag63:" />
    <COL TAG="synth7010" EXPRESSION=":tag1186:" />
    <LOOKUP NAME="CHG_SECM_SYNTHETIC" CONDITION="1" INMAP="1767=tag1767,1109=tag1109,614=tag614,4569=tag4569,11742=tag11742,961=tag2294,962=tag2299,1432=tag1078,14=tag1077,10=tag7100,11=synth2284,3931=synth7011,82=tag2301,1464=synth2287,12=synth7012,2288=tag2288,10536=synth2292,2290=tag2290,1418=synth1079,85=synth1080,63=synth1081,1186=synth7010,1808=tag1808,1776=tag1776,11043=tag11043,743=varResUpdatedDateTime" OUTMAP="tag3610=10" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-addsecmastersynthetic-edit.htm" />
    <STATUS EXPR="'CHG_SECM_SYNTHETIC_STATUS: '+:CHG_SECM_SYNTHETIC_STATUS:+' - '+:CHG_SECM_SYNTHETIC_STATUS_MESSAGE:" CONDITION="1" />

<... SKIPPED ...>

  </LOOP>

This issue was tracked as Item #154820.

Updated Logic to Resolve Deadlock Created While Waiting for Resource Issue Processing
The eagle_ml-2-0_default_in_xml_smf_generic interface failed to correctly process multiple effective dates for the same security.

The logic was updated in xml-smf_generic_objects.spl to reflect correct processing procedures.
Before:

<SPLIT KEY="iif(LEFT(|processingSecurityType|,2)= 'SW' OR |processingSecurityType| = 'FWXXXX', |primaryAssetId| ,'')" />

After:

<SPLIT KEY="|primaryAssetId|" />

This issue was tracked as Item #154836.

Added Support to Perform Entity Resolution Based on All Specified Entity Xrefs in Warehouse Load
Previously added logic for resolving entity by xrefs used only first xref account id and the xref account ids from <entityXrefs> section were ignored. Sometimes using only first xref account id is not enough to resolve correct entity id and entity should be resolved by 2nd,3rd, etc identifier.

Added logic, using entity xrefs from <entityXrefs> section for entity resolution and performing resolution in the entity_xref_resolution.inc include. To switch resolution from only one entity xref to full entity resolution, global flag PERFORM_FULL_ENTITY_RES was introduced. Setting it to Y in w_config_custom.inc enables full entity resolution logic.

To implement entity resolution logic the following files were affected:
1.  eagle_default/in/xml/xslt/wrh_egl_gen_interface3.xsl
updated to call the template for collecting xrefs from <entityXrefs> section
2. eagle_default/in/xml/xslt/wrhs_entity_xref_identifier.xsl
new XSL transformation for the template for collecting xrefs from <entityXrefs> section was developed
3. eagle_default/in/xml/xml-warehouse_v2.xml
the call for XSLT transformations to send new xslt parameters was updated
4. eagle_default/in/xml/include/xml-dbdirect_common.inc
added support to call full entity resolution logic for all entity xrefs

This issue was tracked as Item #155034.

Extended Generic SMF Model Capabilities to Hold Corporate Bond and Municipal Bond Data
The Generic SMF model was expanded to have allow access to BBBO Corporate Bond and Municipal Bond data.
The code was updated in the XSD and the outbound Generic SMF rules:
- /eagle_ml-2-0_cm/out/xml/t_smf.xml
- /eagle_ml-2-0_cm/out/xml/t_smf_streaming.inc

The following fields were added in the SECURITYDBO schema:
Table                                     Column
FIXED_INCOME_DETAIL_EXT ANTIC_SINK_REDEMP_METHOD
FIXED_INCOME_DETAIL_EXT BAB_INDICATOR
FIXED_INCOME_DETAIL_EXT BAB_NBAB_TYPE
FIXED_INCOME_DETAIL_EXT BASE_ACC_RT_BACK1
FIXED_INCOME_DETAIL_EXT BASE_ACC_RT_DT_BACK1
FIXED_INCOME_DETAIL_EXT CALL_REDEMP_METHOD
FIXED_INCOME_DETAIL_EXT CONTINGENT_CONVERSION
FIXED_INCOME_DETAIL_EXT CUR_CPN
FIXED_INCOME_DETAIL_EXT FL_INT_PAY_FREQ
FIXED_INCOME_DETAIL_EXT FLT_BENCH_MULTIPLIER
FIXED_INCOME_DETAIL_EXT FLT_DAYS_PRIOR
FIXED_INCOME_DETAIL_EXT FLT_INT_ACC_TYP
FIXED_INCOME_DETAIL_EXT FLT_NEXT_ACC_DT
FIXED_INCOME_DETAIL_EXT GIC_EXP_DT
FIXED_INCOME_DETAIL_EXT GUARANTY_AGREEMENT
FIXED_INCOME_DETAIL_EXT GUARANTY_AGREEMENT_EXP_DT
FIXED_INCOME_DETAIL_EXT INVERSE_FLT_AUCTION_FREQ
FIXED_INCOME_DETAIL_EXT INVERSE_FLT_BOND_TYP
FIXED_INCOME_DETAIL_EXT MAKE_WHOLE_CALL_SPREAD
FIXED_INCOME_DETAIL_EXT MIN_INCREMENT
FIXED_INCOME_DETAIL_EXT MOST_RECENT_DEFAULT_DTL
FIXED_INCOME_DETAIL_EXT MOST_RECENT_DEFAULT_TYPE
FIXED_INCOME_DETAIL_EXT SALE_DT
FIXED_INCOME_DETAIL_EXT SERIES_IDENTIFIER
FIXED_INCOME_DETAIL_EXT SINK_SCHEDULE_AMT_TYP
FIXED_INCOME_DETAIL_EXT YAS_BNCHMRK_BOND
FIXED_INCOME_DETAIL NXT_PREMIUM_CALL_DT
FIXED_INCOME_DETAIL NXT_PREMIUM_CALL_PX
FIXED_INCOME_EXT CALL_NOTICE_MAX_DAYS
FIXED_INCOME_EXT CALL_NOTICE_MIN_DAYS
FIXED_INCOME_EXT CFI_CODE
FIXED_INCOME_EXT CPN_FREQ_YLD_CNV
FIXED_INCOME_EXT DELIVERY_TYP
FIXED_INCOME_EXT EU_SAVINGS_DIRECTIVE
FIXED_INCOME_EXT EXTENDIBLE
FIXED_INCOME_EXT FIRST_CALL_DT_ISSUANCE
FIXED_INCOME_EXT GILTS_EX_DVD_DT
FIXED_INCOME_EXT INFLATION_LAG
FIXED_INCOME_EXT INFLATION_LINKED
FIXED_INCOME_EXT IS_CURRENT_GOVT
FIXED_INCOME_EXT IS_REG_S
FIXED_INCOME_EXT ISSUERS_STOCK
FIXED_INCOME_EXT JUNIOR
FIXED_INCOME_EXT PCS_QUOTE_TYP
FIXED_INCOME_EXT PCT_PAR_QUOTED
FIXED_INCOME_EXT PUT_EXPIRED
FIXED_INCOME_EXT REMOVAL_REASON
FIXED_INCOME_EXT SECURITY_FACTORABLE
FIXED_INCOME_EXT SENIOR
MBS_DETAIL_EXT NXT_FACTOR_DT
MBS_DETAIL_EXT RECENT_REPORTED_FACTOR
MBS ISSUE_SPREAD_BNCHMRK
MBS SINKING_FUND_FACTOR
MUNI_DETAIL ADJ_CPN_INT_PAY_INFO
MUNI_DETAIL CALL_PROV_STATUS_CODES
MUNI_DETAIL FIRST_TAX_CREDIT_DATE
MUNI_DETAIL MUNI_CORP_OBLIGOR_2
MUNI_DETAIL MUNI_CORP_OBLIGOR_3
MUNI_DETAIL MUNI_FORMAL_AWARD_DATE
MUNI_DETAIL MUNI_OBLIGOR_2_TYP
MUNI_DETAIL MUNI_OBLIGOR_3_TYP
MUNI_DETAIL MUNI_ORIGINAL_CUSIP
MUNI_DETAIL MUNI_PUT_TIMING_INDICATOR
MUNI_DETAIL MUNI_RECENT_REDEMP_AMT
MUNI_DETAIL MUNI_RECENT_REDEMP_DT
MUNI_DETAIL MUNI_RECENT_REDEMP_PX
MUNI_DETAIL MUNI_RECENT_REDEMP_TYP
MUNI_DETAIL MUNI_TAX_CODE
MUNI_DETAIL MUNI_TRUST_ID
MUNI_DETAIL MUNI_VAR_INIT_CPN_RT
MUNI_DETAIL PLANNED_AMORT_CLASS_IND
MUNI_DETAIL REMARKETING_AGENT
MUNI_DETAIL SPA_PROVIDER_ID_BB_CO
MUNI_DETAIL TAX_CREDIT_FREQ
MUNI_DETAIL TAX_CREDIT_RATE
MUNI_DETAIL TENDER_AGENT
MUNI LETTER_CREDIT_2ND_PERC
MUNI LETTER_CREDIT_3RD
MUNI LETTER_CREDIT_3RD_EDT
MUNI LETTER_CREDIT_3RD_PERC
MUNI LETTER_CREDIT_3RD_TYP
MUNI LETTER_CREDIT_4TH
MUNI LETTER_CREDIT_4TH_EDT
MUNI LETTER_CREDIT_4TH_PERC
MUNI LETTER_CREDIT_4TH_TYP
MUNI LETTER_CREDIT_5TH
MUNI LETTER_CREDIT_5TH_EDT
MUNI LETTER_CREDIT_5TH_PERC
MUNI LETTER_CREDIT_5TH_TYP
MUNI LETTER_CREDIT_PERC
MUNI MUNI_ADV_RFND_CODE
MUNI MUNI_ADV_RFND_TYP
MUNI MUNI_ESCROW_PCT
MUNI MUNI_ESCROW_PCT_2ND
MUNI MUNI_ESCROW_TYP
MUNI MUNI_PURCH_AGREEMENT_DT
MUNI MUNI_PURPOSE_2
MUNI MUNI_PURPOSE_3
MUNI MUNI_SOURCE_2
MUNI MUNI_SOURCE_3
MUNI PUT_FEATURE
SECMASTER_DETAIL_EXT ARS_AUCTION_STATUS
SECMASTER_DETAIL_EXT ASSOCIATED_VARIABLE_CUSIP
SECMASTER_DETAIL_EXT BLOOMBERG_SECTOR_CODE
SECMASTER_DETAIL_EXT INDUSTRY_SECTOR_NUM
SECMASTER_DETAIL_EXT IS_SUBORDINATED
SECMASTER_DETAIL_EXT LIQUIDITY_PROVIDER_ID
SECURITY_MASTER_EXT ADJUSTABLE
SECURITY_MASTER_EXT CDR_SETTLE_CODE
SECURITY_MASTER_EXT CONTRIB_DATA_INDICATOR
SECURITY_MASTER_EXT DISTRESSED_SECURITY
SECURITY_MASTER_EXT EX_DIV_CALENDAR
SECURITY_MASTER_EXT FINANCIAL_ADVISOR
SECURITY_MASTER_EXT ISSUER_BULK
SECURITY_MASTER_EXT LIQUID_AGREEMENT_EXP_DT
SECURITY_MASTER_EXT LIQUIDITY_AGREEMENT
SECURITY_MASTER_EXT MAIN_OBLIGOR
SECURITY_MASTER_EXT MAIN_OBLIGOR_ALT_ID_BB

This issue was tracked as Item #155061.

Added Two Fields to XSD Schema and Rules for Warehouse GL Balance Extract (Feedtype WRHSGLDETAILPOSTINGEXTRACT)
Two calculated fields were to be added to XSD and rules if the flag enablecalculations was set to 'Y' in the run task request file:
- field for DR or CR indicator: DR if the value of Balance field > 0 or Asset Liab Desc field = 'EXPENSE', 'ASSET', 'MEMO', 'RESTRICTED'; CR in other cases
XSD element: drCrIndicator
SQL query:

CASE WHEN GL_DETAIL_POSTING.GLDP_BALANCE > 0 THEN 'DR'
   WHEN (GL_DETAIL_POSTING.GLDP_ASSET_LIAB_DESC IN ('EXPENSE', 'ASSET', 'MEMO', 'RESTRICTED')
   AND (GL_DETAIL_POSTING.GLDP_BALANCE = 0 OR GL_DETAIL_POSTING.GLDP_BALANCE IS NULL)) THEN 'DR'
   ELSE 'CR' END GLDP_DR_CR_INDICATOR,

- field for the absolute value of a Balance field value

XSD element: absGldpBalance
SQL field:

 CASE WHEN GL_DETAIL_POSTING.GLDP_BALANCE IS NULL THEN 0
   ELSE ABS(GL_DETAIL_POSTING.GLDP_BALANCE) END ABS_GLDP_BALANCE,

This issue was tracked as Item #155136.

Added Support for Traverse Hierarchy Filtering By Sector Only
The ability to limit the Traverse Hierarchy to return only Sector was unavailable.

Added functionality of limiting Traverse Hierarchy to Sector by passing in the following parameter in the RTR:

<taskParameter>
<name>entitySectorType</name>
<dataType>S</dataType>
<vlaue>SECTOR<.value>
</taskParameter>

The following SQL is generated:

SELECT
ed.entity_id masterEntityId, ed.entity_detail_id resolvedEntity, ed.entity_type entityType, esp.sector_type masterEntitySectorType, esp1.sector_type entitySectorType
FROM
rulesdbo.entity en, rulesdbo.entity_detail ed, rulesdbo.entity en1, rulesdbo.entity_star_processing esp, rulesdbo.entity_star_processing esp1
WHERE 1=1
and en.entity_id = ed.entity_id AND en.entity_id = esp.entity_id AND ed.entity_detail_id = en1.entity_id AND en1.entity_id = esp1.entity_id AND en.entity_id = '8900251' AND esp1.sector_type in ('SECTOR')

This code produces results filtered by Sector for entity resolution.

This issue was tracked as Item #155672.

EJM

Added Validation for Target Regions not Inline with Coming Message
To avoid potential issues, EJM was updated to include validation and fail message if the target region is not inline with coming message.

A w_config_custom.inc flag was introduced for checking the initial RTR performance:

<CODE>
:W_VERIFY_REGION::='Y';
</CODE><!--

If the global flag is null or N, no region check will be run. If the global flag is set to Y, then the workflowState group and field, originatingCorrelationId, is checked:

<workflowState>
<processCorrelationId correlationIdScheme="correlationIdScheme">H34214888882IJBER33003_82</processCorrelationId>
<originatingCorrelationId correlationIdScheme="correlationIdScheme">H34214888882IJBER33003_82</originatingCorrelationId>
<processWorkflowName>eagle_wrf_i2i</processWorkflowName>
<totalParts>1</totalParts>
<taskId>RunGenericExtract</taskId>
<waitEventId>RunGenericExtract_wait</waitEventId>
<nextStream>eagle_ml-2-0_default_cm_execwkfl</nextStream>
</workflowState>

If workflowState exists, the parameter is checked in RTR RemoteCMExecution:

<taskParameter>
<name>RemoteCMExecution</name>
<dataType>S</dataType>
<value>1</value>
</taskParameter>

If the parameter is equal to 1, it is the initial RTR for Remote run and the region check can start. If 0, region check is skipped.

In the region check, http://www.eagleinvsys.com/ is skipped and the substring value is checked. If the substring is eagle_ml-2-0_default_cm_control_message, the region check is stopped and the RTR is processed. If not, the value is compared with TNS and if the values are identical, the RTR is processed. If not, the processing is stopped with the error that the target rregion is not inline with coming message.

This issue was tracked as Item #151028.

Enhanced Data Integrity with Optional Checksum
The implementation for a checksum on an entire payload was requested. Using EJM as part of the data load processing, an RTR would be sent which would notify of the file name, hash value.

New logic was added to calculate hashsum by adding the get_hash_sum.inc include, hashsum calculation during eagle_ml-2-0_default_cm_acquire_data stream execution by including the acquire_data_files.xml rule, and hashsum calculation during workflow execution by including the execute_wrkfl_event.xml and t_wrf_unzip_t.xml rules.

This issue was tracked as Item #154872.

I2I

Added LinkId Parameter to Enable Quick Switching Destination Credentials
The ability to switch destination credentials quickly was unavailable.

The new LinkId parameter, which will be unique per SpokeSID, grants the ability to switch from one destination to another quickly by specifying LinkId in the RTR or profile:

  <taskParameter>
   <name>LinkId</name>
   <dataType>S</dataType>
   <value>3332</value>
  </taskParameter>

In the I2I config file, the following parameters are set:

<LOOP CONDITION=":param_SpokeSID: = 'QA15R2LN'" TYPE="WHILE">
 <LOOP CONDITION=":LinkId: = '3332'" TYPE="WHILE">
  <COL TAG="W_I2I_IS_SPOKE" EXPRESSION="''"/>
  <COL TAG="W_I2I_IS_HUB" EXPRESSION="'YES'"/>
  <COL TAG="w_i2i_delivery_stream" EXPRESSION="'eagle_wrf_i2i_message_distribution'"/>
  <COL TAG="w_i2i_ftp_url" EXPRESSION="'11.11.11.11'"/>
  <COL TAG="w_i2i_ftp_user" EXPRESSION="'value'"/>
  <COL TAG="w_i2i_ftp_pass" EXPRESSION="'pass'"/>
  <COL TAG="w_i2i_ftp_extract_copy" EXPRESSION="'Y'"/>
  <COL TAG="w_i2i_ftp_reply_location" EXPRESSION="'CMW/reply_location/'"/>
  <COL TAG="w_i2i_ftp_data_location" EXPRESSION="'CMW/data_location/'"/>
  <BREAK CONDITION="1"/>
 </LOOP>
 <LOOP CONDITION=":LinkId: = '3333'" TYPE="WHILE">
  <COL TAG="W_I2I_IS_SPOKE" EXPRESSION="''"/>
  <COL TAG="W_I2I_IS_HUB" EXPRESSION="'YES'"/>
  <COL TAG="w_i2i_delivery_stream" EXPRESSION="'specific_stream_name'"/>
  <COL TAG="w_i2i_ftp_url" EXPRESSION="'11.11.11.11'"/>
  <COL TAG="w_i2i_ftp_user" EXPRESSION="'value'"/>
  <COL TAG="w_i2i_ftp_pass" EXPRESSION="'pass'"/>
  <COL TAG="w_i2i_ftp_encrypted" EXPRESSION="'NO'"/>
  <COL TAG="w_i2i_ftp_data_location" EXPRESSION="'CMW/data_location2/'"/>
  <BREAK CONDITION="1"/>
 </LOOP>
 <LOOP CONDITION=":LinkId: = '3334'" TYPE="WHILE">
  <COL TAG="W_I2I_IS_SPOKE" EXPRESSION="''"/>
  <COL TAG="W_I2I_IS_HUB" EXPRESSION="'YES'"/>
  <COL TAG="w_i2i_delivery_stream" EXPRESSION="'specific_stream_name2'"/>
  <COL TAG="w_i2i_mixed_delivery" EXPRESSION="'Y'"/>
  <BREAK CONDITION="1"/>
 </LOOP> 
 <BREAK CONDITION="1"/>
</LOOP>

This issue was tracked as Item #153437.

Updated I2I Workflow (eagle_wrf_i2i) to Support All Possible Parameters in RTR
It was impossible to pass date and custom parameters in the initial RTR for I2I to Generic Extract workflow which is used in I2I process.

The problem is that in an i2i workflow not all parameters were specified on the Generic Extract workflow step and it is impossible to predict all parameters. A common solution was made which allows passing any parameters to Generic Extract workflow without any changes in IWS.
The following i2i include was updated:
i2i_common_include.inc

This issue was tracked as Item #155636.

Added Logic for I2I Process Change Incoming Source Based on HUBID
It was impossible to use Source mapping logic for I2I because if a variable in w_config_custom.inc (SOURCE_MAPPING_INFO) was specified it worked for ALL files and for ALL Feed Types. But preferred design was to make it work only for I2I and for specific interfaces.

Two new parameters were added for extract, they are also supported in I2I.
• UseSentBy – This attribute has default value Y, If this set = Y, in extract file field sentBy will contain Hub Id.

<sentBy>http://www.eagleinvsys.com/QA15R2LN2</sentBy>

This logic can be disabled in RTR.
• EnableSourceMappingFlag – This attribute has default value N, If this set = Y, in extract file field enableSourceMappingFlag will be mapped and used on the load side for Source Mapping.

<header>
<batchKey>11122233^20170329^KKTEST1</batchKey>
<objectType>WarehouseCashActivity</objectType>
<enableSourceMappingFlag>Y</enableSourceMappingFlag>
</header>

This issue was tracked as Item #155637.

Software Fixes

EagleML    

Fixed Held Only Parameters Returning Inactive Underlying Securities

The Begin Date and End Date parameters on the Underlying Security table were not being evaluated when running the SMF by the Held Only parameters.

The condition for the Date filter was added for the UNDERLYING_SECURITY table to resolve this issue.

This issue was tracked as Item #154541.

Update Logic for SMF Extract in Held Mode, Show Only Active Underlying Model for Each Security
Result file for SMF extract in Held Only mode contains information about all underlying records, even for inactive.

Within the SMFEXTRACT in Held Mode, the logic was improved to retrieve only active underlying records for the effective date specified. This eliminates inactive underlying securities from being included as there may only be a single active underlying record at a given time. The date used for the underlying securities matches the effective date of the held positions using the HeldEffectiveDate parameter.

This issue was tracked as Item #155666.

Added Mapping for GenericSMF Element tagNoChangeCase
The element tagNoChangeCase had no mapping in the GenericSMF. The element tagNoChange was not used when resolving security and was not mapped into the panel lookup. The addition of tag 4637 into the eagle/star/pan-qxref-s-msgcntr.htm panel using an overlay was ignored.

The following adjustments were made to mapping regarding the tagNoChangeCase element in the GenericSMF:
1.The mapping for the tagNoChangeCase element was added in the dynamic\eagle_default\in\xml\xslt\eagleml_smf_gen_fields.xsl.
2.The mapping was added for tag 4637 in security_resolution_full.inc in order to ensure consistency for all rules which are using the security resolution.
3. The mapping for tag 4637 was added based on specified scope - default, config, and specific - in security_resolution_generic.inc.
4. The mapping was added for tag 4637 in the 4. tpe\dynamic\dat\eagle\star\pan-qxref-s-msgcntr.htm panel for resolving the security.

This issue was tracked as Item #148344.

Adjusted Open Lot Extract to Perform Left Outer Join
An inner join on the holdingdbo.position_detail to holdingdbo.position_cost_lot was generated by the q stream for Warehouse Open Lot extracts which unnecessarily populated the data from every position record in the position_cost_lot table.

The code in the extract_warehouse_openlot.inc include was changed from an inner join to a left outer join to address this issue.

This issue was tracked as Item #149843.

Added Delimiter to Resolve ALLOW_UPDATE Parameter in eagle_default/in/xml/xslt/get_smf_all_xrefs_list.xsl
There is no delimiter between xref records where a value exists in the LoadXRefOptions field.

Added a delimiter in eagle_default/in/xml/xslt/get_smf_all_xrefs_list.xsl.

This issue was tracked as Item #153666.

Added SECURITYDBO.SECURITY_TENOR Table in eagle_ml-2-0_cm/out/tagvalue/extract_smf.xml
The eagle_ml-2-0_cm/out/tagvalue/extract_smf.xml extract required the SECURITY_TENOR table.

The SECURITYDBO.SECURITY_TENOR table was added to the requested extract.

This issue was tracked as Item #153778.

Updated FORCEADDTAGS Logic for pan-rebookcorpaction.html Panel in the xml-ref_ca.xml Rule
Both tags 8081 and 1001 were present in the eagle/star/reference/pan-rebookcorpaction.htm panel with improper logic.

The logic was corrected from:

<IF EXPR=":tagdb54:='RD'" FILE="eagle/star/reference/pan-rebookcorpaction.htm" GENERATEEVENTID="NO" EXECUTEPANEL="YES" PANELBATCHEXECUTE="YES" FORCEADDTAGS="8081=tag8081,1001=tag1001" />

to

<IF EXPR=":tagdb54:='RD'" FILE="eagle/star/reference/pan-rebookcorpaction.htm" GENERATEEVENTID="NO" EXECUTEPANEL="YES" PANELBATCHEXECUTE="YES" FORCEADDTAGS="8081,1001" />

This issue was tracked as Item #153794.

Solved Problem with Wrong Grouping for ISSUEFXRATEEXTRACT for <maxeffectivedaterule> Parameter
When MaxEffectiveDate filter is used for Issue FxRate Extract, records with same 'SECURITY_ALIAS' and different value of 'FROM_SECALIAS' are grouped into one record, and some records are not extracted.

Additional DB field 'FROM_SECALIAS' is used for grouping records for MaxEffectiveDate filter statement.

This issue was tracked as Item #153961.

Fixed Warehouse Extracts Failing to Return the Account Basis from Database Tables
A series of EagleML extracts which are able to run across different accounting bases were failing to display the Account Basis.

The following code was enhanced to reflect fixes to the display of Accounting Basis.
1. extract_entity_fields.inc:

<!-- ID fields -->
<COL TAG="sql_fields_entity_ORA" EXPRESSION="'
RTRIM('+:vTmpEntityTable_ORA:+'.ENTITY_ID)   ' + :sql_field_prefix: + 'ENTITY_ID  ,\n
RTRIM('+:vTmpEntityTable_ORA:+'.ENTITY_NAME) ' + :sql_field_prefix: + 'ENTITY_NAME,\n
RTRIM('+:vTmpEntityTable_ORA:+'.ENTITY_TYPE) ' + :sql_field_prefix: + 'ENTITY_TYPE,\n
RTRIM('+iif(:vEntityTableF_ORA_extension: = :varEntityTable: or :vEntityTableF_ORA_extension: = :varEntityTableF_ORA, :vTmpEntityTable_ORA: + '.ACCOUNTING_BASIS',  : vEntityTableF_ORA_extension:+ '.' + 'ACCT_BASIS')+') ' + :sql_field_prefix: + 'ACCT_BASIS'"/>
<COL TAG="sql_fields_entity_SQL" EXPRESSION="'
RTRIM('+:vTmpEntityTable_SQL:+'.ENTITY_ID)   ' + :sql_field_prefix: + 'ENTITY_ID  ,\n
RTRIM('+:vTmpEntityTable_SQL:+'.ENTITY_NAME) ' + :sql_field_prefix: + 'ENTITY_NAME,\n
RTRIM('+:vTmpEntityTable_SQL:+'.ENTITY_TYPE) ' + :sql_field_prefix: + 'ENTITY_TYPE,\n
RTRIM('+ iif(:vEntityTableF_SQL_extension: = :varEntityTable: or :vEntityTableF_SQL_extension: = :varEntityTableF_SQL:, :vTmpEntityTable_SQL: + '.ACCOUNTING_BASIS',  : vEntityTableF_SQL_extension: + '.' + 'ACCT_BASIS')+' )' + :sql_field_prefix: + 'ACCT_BASIS'"/>
…
'+iif(:varFeedType:='WRHSPOSITIONEXTRACT'or :varFeedType:='WRHSOPENLOTEXTRACT'
or :varFeedType:='WRHSTRADEEXTRACT'or:varFeedType:='WRHSGLDETAILPOSTINGEXTRACT','', 'RTRIM('+:vTmpEntityTable_ORA:+'.BASE_CURRENCY)'+:sql_field_prefix:+'EM_BASE_CURRENCY,\n')+'

…
'+iif(:varFeedType:='WRHSPOSITIONEXTRACT' or :varFeedType:='WRHSOPENLOTEXTRACT'
or :varFeedType:='WRHSTRADEEXTRACT' or :varFeedType:='WRHSCLOSELOTEXTRACT'
or :varFeedType:='WRHSGLDETAILPOSTINGEXTRACT','',
'RTRIM('+:vTmpEntityTable_ORA:+'.ACCOUNTING_BASIS) ' + :sql_field_prefix: + 'EM_ACCT_BASIS,\n')+'

2. extract_warehouse_position.inc and extract_warehouse_trade.xml:

<COL TAG="vEntityTableF_ORA_extension"   EXPRESSION=" :vMasterTable: " />
<COL TAG="vEntityTableF_SQL_extension"   EXPRESSION=" :vMasterTable: " />


3. t_warehouse_openlot_streaming.inc:

<OUTPUT VAR="ACCT_BASIS" XMLTAG="accountingBasis"/>


4. t_warehouse_openlot.xml:

<COL TAG="13" EXPRESSION="|ACCT_BASIS|" XMLPATH="accountingBasis" ELEMENTTYPE="XMLNode" />


5. t_warehouse_closelot_streaming.inc
Before

<OUTPUT VAR="ACCOUNTING_BASIS" XMLTAG="accountingBasis" />

After

<OUTPUT VAR="ACCT_BASIS" XMLTAG="accountingBasis" />


6.  t_warehouse_close_lot.xml
Before

<COL TAG="9" EXPRESSION="|ACCOUNTING_BASIS|" XMLPATH="accountingBasis" ELEMENTTYPE="XMLNode" />

After

<COL TAG="9" EXPRESSION="|ACCT_BASIS|" XMLPATH="accountingBasis" ELEMENTTYPE="XMLNode" />


7. t_warehouse_close_lot_streaming_eml.inc

<OUTPUT VAR="ACCT_BASIS" XMLTAG="accountingBasis" />


8. t_warehouse_openlot_xmldbapi.xml

<COL TAG="13" EXPRESSION="|ACCT_BASIS|" XMLPATH="INPUT_PAR\P\n=IN_ACCOUNT" ELEMENTTYPE="XMLNodeList" CONDTOINCLUDE="StringLength(|ACCT_BASIS|) != 0"/>


9. t_warehouse_openlot_xmldbapi_streaming.inc

<OUTPUT CONDITION="StringLength(:ACCT_BASIS:) != 0"><OUTPUT><![CDATA[</P>
<P n="IN_ACCOUNT">]]></OUTPUT><OUTPUT VAR="ACCT_BASIS"/></OUTPUT>

This issue was tracked as Item #154356.

Enhanced Mapping to Resolve Security Xref Extract Nodes Repeating Outside xId Node

The Primary Asset ID, Asset Currency, Primary Exchange, and Security Alias Xref IDs were falling outside of the xId node, which resulted in repeating nodes if more than one Xref Id was present. The issue occurs when there are several xrefIds for one securityAlias.

Enhanced eagle_ml-2-0_cm\out\xml\t_xref.xml rule in order to remedy node duplication.
Before:

<GROUP NAME="xref" ORDER="0" GROUP_BY="|SECURITY_ALIAS|">
<BATCHIMPORT XMLROOTTAG="xrefIdentifiers" XMLMESSAGETAG="" XMLADDEMPTYELEMENTS="NO">
<COLUMNS>
<COL TAG="vTotalCnt" EXPRESSION="iif (StringLength(:vTotalCnt:) = 0, '1', convert(atoi(:vTotalCnt:) + 1,0))" SCOPE="GLOBAL" CONDTOINCLUDE="0" XMLPATH="0" ELEMENTTYPE="XMLNode" />
<COL TAG="201" EXPRESSION="|XREF_SECURITY_ID|" XMLPATH="xId\xId" ELEMENTTYPE="XMLNode" />
<COL TAG="202" EXPRESSION="|XREF_TYPE|" XMLPATH="xId\xIdType" ELEMENTTYPE="XMLNode" />
<COL TAG="203" EXPRESSION="|EXCHANGE|" CONDTOINCLUDE="StringLength(|EXCHANGE|) > 0" XMLPATH="xId\xExchangeCode" ELEMENTTYPE="XMLNode" />
<COL TAG="204" EXPRESSION="|PRIMARY_XREF_SEC_ALIAS|" XMLPATH="xId\primaryXrefSecAlias" ELEMENTTYPE="XMLNode" />
<COL TAG="205" EXPRESSION="|CANCEL_IND|" XMLPATH="xId\cancelInd" ELEMENTTYPE="XMLNode" />
<COL TAG="206" EXPRESSION="|END_DATE|" XMLPATH="xId\endDate" ELEMENTTYPE="XMLNode" />
<COL TAG="207" EXPRESSION="Replace(|UPDATE_TIMESTAMP|,'\3A',':')" XMLPATH="xId\xUpdateTimestamp" ELEMENTTYPE="XMLNode" />
<COL TAG="208" EXPRESSION="|UPDATE_SOURCE|" XMLPATH="xId\xUpdateSource" ELEMENTTYPE="XMLNode" />
<COL TAG="209" EXPRESSION="|BKUP_UPDATE_SOURCE|" XMLPATH="xId\xBkupUpdateSource" ELEMENTTYPE="XMLNode" />
<COL TAG="210" EXPRESSION="|ORIG_SECURITY_ALIAS|" XMLPATH="xId\xOrigSecurityAlias" ELEMENTTYPE="XMLNode" />
<COL TAG="211" EXPRESSION="|XREF_SECURITY_ALIAS|" XMLPATH="xId\xSecurityAlias" ELEMENTTYPE="XMLNode" />
<COL TAG="212" EXPRESSION="|SHORT_DESC|" XMLPATH="xId\xShortDesc" ELEMENTTYPE="XMLNode" />
</COLUMNS>
</BATCHIMPORT>
<HEADERBATCHIMPORT XMLROOTTAG="" XMLMESSAGETAG="" />
<FOOTERBATCHIMPORT XMLROOTTAG="" XMLMESSAGETAG="" />
</GROUP>
<GROUP NAME="xrefs1" ORDER="1" GROUP_BY="|SECURITY_ALIAS|">
<BATCHIMPORT XMLROOTTAG="" XMLMESSAGETAG="" XMLADDEMPTYELEMENTS="NO">
<COLUMNS>
<COL TAG="20" EXPRESSION="|CM_EXCHANGE|" XMLPATH="primaryExchange" ELEMENTTYPE="XMLNode" />
<COL TAG="21" EXPRESSION="iif(:EXCLUDE_SECURITY_ALIAS: != 'Y', |SECURITY_ALIAS| ,'')" XMLPATH="securityAlias" ELEMENTTYPE="XMLNode" />
<COL TAG="22" EXPRESSION="|CM_CURRENCY_CODE|" XMLPATH="assetCurrency" ELEMENTTYPE="XMLNode" />
<!-- extension -->
<INCLUDE FILE="customer/extensions/smfidentifiers.inc" RELATIVEPATHTYPE="RULESROOT" REQUIRED="NO"/>
</COLUMNS>
</BATCHIMPORT>
<HEADERBATCHIMPORT XMLROOTTAG="" XMLMESSAGETAG="" />
<FOOTERBATCHIMPORT XMLROOTTAG="" XMLMESSAGETAG="" />
</GROUP>

After:

<GROUP NAME="xref" ORDER="0" GROUP_BY="|SECURITY_ALIAS|">
<BATCHIMPORT XMLROOTTAG="xrefIdentifiers" XMLMESSAGETAG="" XMLADDEMPTYELEMENTS="NO">
<COLUMNS>
<COL TAG="vTotalCnt" EXPRESSION="iif (StringLength(:vTotalCnt:) = 0, '1', convert(atoi(:vTotalCnt:) + 1,0))" SCOPE="GLOBAL" CONDTOINCLUDE="0" XMLPATH="0" ELEMENTTYPE="XMLNode" />
<COL TAG="201" EXPRESSION="|XREF_SECURITY_ID|" XMLPATH="xId\xId" ELEMENTTYPE="XMLNode" />
<COL TAG="202" EXPRESSION="|XREF_TYPE|" XMLPATH="xId\xIdType" ELEMENTTYPE="XMLNode" />
<COL TAG="203" EXPRESSION="|EXCHANGE|" CONDTOINCLUDE="StringLength(|EXCHANGE|) > 0" XMLPATH="xId\xExchangeCode" ELEMENTTYPE="XMLNode" />
<COL TAG="204" EXPRESSION="|PRIMARY_XREF_SEC_ALIAS|" XMLPATH="xId\primaryXrefSecAlias" ELEMENTTYPE="XMLNode" />
<COL TAG="205" EXPRESSION="|CANCEL_IND|" XMLPATH="xId\cancelInd" ELEMENTTYPE="XMLNode" />
<COL TAG="206" EXPRESSION="|END_DATE|" XMLPATH="xId\endDate" ELEMENTTYPE="XMLNode" />
<COL TAG="207" EXPRESSION="Replace(|UPDATE_TIMESTAMP|,'\3A',':')" XMLPATH="xId\xUpdateTimestamp" ELEMENTTYPE="XMLNode" />
<COL TAG="208" EXPRESSION="|UPDATE_SOURCE|" XMLPATH="xId\xUpdateSource" ELEMENTTYPE="XMLNode" />
<COL TAG="209" EXPRESSION="|BKUP_UPDATE_SOURCE|" XMLPATH="xId\xBkupUpdateSource" ELEMENTTYPE="XMLNode" />
<COL TAG="210" EXPRESSION="|ORIG_SECURITY_ALIAS|" XMLPATH="xId\xOrigSecurityAlias" ELEMENTTYPE="XMLNode" />
<COL TAG="211" EXPRESSION="|XREF_SECURITY_ALIAS|" XMLPATH="xId\xSecurityAlias" ELEMENTTYPE="XMLNode" />
<COL TAG="212" EXPRESSION="|SHORT_DESC|" XMLPATH="xId\xShortDesc" ELEMENTTYPE="XMLNode" />
</COLUMNS>
</BATCHIMPORT>
<HEADERBATCHIMPORT XMLROOTTAG="" XMLMESSAGETAG="" />
<FOOTERBATCHIMPORT XMLROOTTAG="" XMLMESSAGETAG="" >
<COLUMNS>
<COL TAG="20" EXPRESSION="|CM_EXCHANGE|" XMLPATH="primaryExchange" ELEMENTTYPE="XMLNode" />
<COL TAG="21" EXPRESSION="iif(:EXCLUDE_SECURITY_ALIAS: != 'Y', |SECURITY_ALIAS| ,'')" XMLPATH="securityAlias" ELEMENTTYPE="XMLNode" />
<COL TAG="22" EXPRESSION="|CM_CURRENCY_CODE|" XMLPATH="assetCurrency" ELEMENTTYPE="XMLNode" />
<INCLUDE FILE="customer/extensions/smfidentifiers.inc" RELATIVEPATHTYPE="RULESROOT" REQUIRED="NO"/>
</COLUMNS>
</FOOTERBATCHIMPORT>
</GROUP>

This issue was tracked as Item #154379.

Resolved Timeout Parameter Setting Rolling Back to Default Per New EagleML Install
The Message Center stream eagle_ml-2-0_default_cm_ndfa_exec produced an error which lead to a failure of the stream per timeout of certain processes.

The logic was updated to reflect changes to the timeout in the eagle_ml-2-0_cm/ndfa/read_datamaps.inc include from:

<RUNPREPROCESSOR NAME="listfiles" PATHEXPR="iif(GetPlatform() = 'UNIX', 'sh', 'cmd')" TIMEOUT="20" CONDITION="StringLength(:w_workflow_dir:) > 0">

to

<RUNPREPROCESSOR NAME="listfiles" PATHEXPR="iif(GetPlatform() = 'UNIX', 'sh', 'cmd')" TIMEOUT="60" CONDITION="StringLength(:w_workflow_dir:) > 0">

This issue was tracked as Item #154487.

Unable to Modify a Pending CA with UPDATE Action in CASH DIVIDEND
Modifying a Pending Corporate Action with EagleML UPDATE action in the GenericCA Object was impossible.

A new CA record created instead of updating the existing one for Rebook in CASH DIVIDEND

The following conditions would invoke this behavior:
a) <cpStatus> is set to PD;
b) <cpReason> is set to CASH DIVIDEND;
c) <transType> is set to CASHDIV;
d) <clientSpecificCAId> is absent or commented out;

The code was enhanced for the xml-ref_ca.xml rule to prevent errors with null tags:

<COL TAG="ins_upd" EXPRESSION="IIF(StringLength(:tagdb1695:)>0, 'U' ,'I')" />

to

<COL TAG="ins_upd" EXPRESSION="IIF(StringLength(:tag4268:)>0, 'U' ,'I')" />

and now the UPDATE mode works without any issues and updates the existing record instead of creating a new one.

This issue was tracked as Item #154694.

Enhanced Accounting CA and Cancel CA Inbound Rules
A user no longer had permission to pass in a batch identifier to cancel or rebook a corporate action through the Client PGI since the PGI is unable to provide a ClientSpecificId.

The code was enhanced for the xml-ref_ca.xml rule to prevent errors with null tags:

<COL TAG="ins_upd" EXPRESSION="IIF(StringLength(:tagdb1695:)>0, 'U' ,'I')" />

to

<COL TAG="ins_upd" EXPRESSION="IIF(StringLength(:tag4268:)>0, 'U' ,'I')" />

This issue was tracked as Item #154744.

Resolved Missing Tags in Accounting Cash Stream
The XML to STAR tag mapping appeared to be missing which caused jobs to fail when utilizing the AccountingCash object. Furthermore, when a rule was opened through Message Center Editor, the include for rule mapping was not shown, even though it was being called correctly during processing.

A method to mitigate missing tag issues within the AccountingCash object by loading it into the eagle_ml-2-0_default_in_xml_acct_cash stream using Message Center Editor was instituted. To bypass errors of the entity not being present, upload an entity with entityId COLETEST, per the AccountingCash example. Reuploading the AccountingCash object results in an error which prompts for an Accounting Period for the entity. Note that the entityId and accountingBasis here are to be identical to the previously uploaded entity, with the endDate and closedDate being greater than the current date. Loading again, Message Center Console shows an error related to tag 1827, whose tag can be edited in Web Panel Designer by changing the recPayCategory to a value that exists in the test box. The final error shows that an Accounting Basis is required, whose inclusion, once uploaded, allows the AccountingCash object to be uploaded successfully.

This issue was tracked as Item #154807.

Fixed Issues Relating to UnderlyingModel Data Group
The CD_ID specified in the UnderlyingMode/xrefIdentifiers/xId1 was not saved when loading Parent derivatives. Additionally, the Underlying_CUSIP column was being populated in the Derivatives_Hist table, which was due to an XSL mapping issue.

The following mapping for Xreference identifiers was added to the eagleml_smf_underlying_to_gen.xsl XSLT for UnderlyingModel and FloaterMode/UnderlyingModel:

<ticker>
 <xsl:value-of select="./eagleml:ticker"/>
</ticker>
<cusip>
 <xsl:value-of select="./eagleml:cusip"/>
</cusip>
...
<xrefIdentifiers>
 <xsl:apply-templates select="./eagleml:xrefIdentifiers/node()" mode="xrefs" />
</xrefIdentifiers>
...

UnderlyingModel was changed to genericSMF in get_smf_all_xrefs_list.xsl:

<xsl:variable name="objectType">
  <xsl:choose>
   <xsl:when test="normalize-space(eagleml:EagleML/eagleml:referenceTransaction/eagleml:header/eagleml:objectType) = 'UnderlyingModel'">genericSMF</xsl:when>
   <xsl:otherwise>
  <xsl:value-of select="concat(translate(substring(eagleml:EagleML/eagleml:*[name()=$vTransType]/eagleml:header/eagleml:objectType,1,1),'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),substring(eagleml:EagleML/eagleml:*[name()=$vTransType]/eagleml:header/eagleml:objectType,2))"/>
   </xsl:otherwise>
  </xsl:choose>
</xsl:variable>

Regarding the Underlying_CUSIP column population in the Derivatives_Hist table, the mapping of Primary Asset Id to Underlying Cusip will be maintained due to other identifiers being resolved by the Underlying Security Resolution logic, as well as its mapping to tag 1348 in the Account SMF panel.

This issue was tracked as Item #155044.

The Output for Trial Balance Extract Was Changed According to XSD
Trial Balance extract is not valid according to XSD.

Add in the RTR parameter XSDValidation and send to CM stream.

<taskParameter>
  <name>XSDValidation</name>
  <dataType>S</dataType>
  <value>Y</value>
</taskParameter>

1. In XSD eagleml-wh-shared-2-0.xsd in ValuationDate.model make valuationDate element optional:

<xsd:element name="valuationDate" type="xsd:date" minOccurs="0">.

2. In XSD eagleml-acc-shared-2-0.xsd in complexType DistributionActivity in EstarNav.model SharesOutstanding.model replaced by NavSharesOutstanding.model.
Corrected this field in t_acct_distribution_activity_streaming.inc and t_acct_distribution_activity.xml.
3. In t_asset_properties_fields.inc, t_asset_properties_fields_start.inc and t_asset_properties_fields_streaming.inc changed the order of fields.
4. In t_entity_common_ids_fields_additional_start.inc added EXECUTEON="START" for those fields that did not have it.

This issue was tracked as Item #155313.

Enhanced Code to Mitigate Invalid Identifier Error with POSITION_DETAIL Table
When using an Element Reduction Profile with taskparameter QueryProfileName and taskparameter IncludePortfolioValuation, an error was generated in the SQL where the Position_Detail table was referenced, but without use in the profile, there was no need to join with it in the SQL.

The extract_holding_ext_port_valuation_fields.inc include was modified to reflect the changes in the POSITION_DETAIL tables:

<COL TAG="sql_fields_port_val_ext_ORA" EXPRESSION="'
  CASE \n
    WHEN to_char('+:vPortValTempTableA:+'.POST_DT, \'YYYY-MM-DD\') = \'1900-01-01\' THEN NULL\n
    ELSE to_char('+:vPortValTempTableA:+'.POST_DT, \'YYYY-MM-DD\')\n
  END PV_PRIOR_EFFECTIVE_DATE,\n
  CASE \n
    WHEN (RTRIM(SECURITY_MASTER.PROCESS_SEC_TYPE) = \'CRCRCR\' AND RTRIM(SECURITY_MASTER.CURRENCY_CODE) = RTRIM('+iif(:varFeedType: = 'WRHSOPENLOTEXTRACT','LOT_LEVEL_POSITION.CURRENCY','POSITION_DETAIL.BASE_CURRENCY')+')) THEN \n
    to_char('+:vPortValTempTableA:+'.EFFECTIVE_DT, \'YYYY-MM-DD\')\n
    WHEN RTRIM(SECURITY_MASTER.PROCESS_SEC_TYPE) = \'SWLEAC\' THEN NULL\n
    ELSE to_char('+:vPortValTempTableA:+'.ACCTG_DATE, \'YYYY-MM-DD\')\n
  END PV_LAST_CHANGE_DATE,\n'+:sql_fields_port_val_ext_common:" /> 

 <COL TAG="sql_fields_port_val_ext_SQL" EXPRESSION="
   '  CASE \n
    WHEN '+:SQL_DATETOCHAR_B:+:vPortValTempTableA:+'.POST_DT'+:SQL_DATETOCHAR_E:+' = \'1900-01-01\' THEN NULL\n
    ELSE '+:SQL_DATETOCHAR_B:+:vPortValTempTableA:+'.POST_DT'+:SQL_DATETOCHAR_E:+'\n
  END PV_PRIOR_EFFECTIVE_DATE,\n
  CASE \n
    WHEN (RTRIM(SECURITY_MASTER.PROCESS_SEC_TYPE) = \'CRCRCR\' AND RTRIM(SECURITY_MASTER.CURRENCY_CODE) = RTRIM('+iif(:varFeedType: = 'WRHSOPENLOTEXTRACT','LOT_LEVEL_POSITION.CURRENCY','POSITION_DETAIL.BASE_CURRENCY')+')) THEN \n
    '+:SQL_DATETOCHAR_B:+:vPortValTempTableA:+'.EFFECTIVE_DT'+:SQL_DATETOCHAR_E:+'\n
    WHEN RTRIM(SECURITY_MASTER.PROCESS_SEC_TYPE) = \'SWLEAC\' THEN NULL\n
    ELSE '+:SQL_DATETOCHAR_B:+:vPortValTempTableA:+'.ACCTG_DATE'+:SQL_DATETOCHAR_E:+'\n
  END PV_LAST_CHANGE_DATE,\n'+:sql_fields_port_val_ext_common:" />

This issue was tracked as Item #155431.

Resolved Inner Join Causing Position Extract Failure
The inner joins in the queries were causing an issue which, when extracting an index through the Warehouse Position and Cash Activity extracts, returned no data. This was due to an error in the SQL which was looking for a position extract in the HOLDING.DBO.POSITION_COST_DETAIL table, where none existed.

The extract_warehouse_position.inc include was modified from:

…
<COL TAG="sql_tables_ORA" EXPRESSION=":sql_tables_ORA: + iif(:vAddJoinTable: = 'Y' and :TABLE_NAME: !='POSITION_COST_DETAIL','\n left outer join ' + PadRight(:FULL_TABLE_NAME:,' ',40) + ' on ' + :vSecondTableA: + '.POSITION_DETAIL_ID = ' + :FULL_TABLE_NAME: + '.POSITION_DETAIL_ID', '')" />
  <COL TAG="sql_tables_SQL" EXPRESSION=":sql_tables_SQL: + iif(:vAddJoinTable: = 'Y' and :TABLE_NAME: !='POSITION_COST_DETAIL','\n left outer join ' + PadRight(:FULL_TABLE_NAME:,' ',40) + ' on ' + :vSecondTableA: + '.POSITION_DETAIL_ID = ' + :FULL_TABLE_NAME: + '.POSITION_DETAIL_ID', '')" />
  <COL TAG="sql_tables_ORA" EXPRESSION=":sql_tables_ORA: + iif(:vAddJoinTable: = 'Y' and :TABLE_NAME: ='POSITION_COST_DETAIL','\n inner join ' + :FULL_TABLE_NAME: + ' on ' + :vSecondTableA: + '.POSITION_DETAIL_ID = ' + :FULL_TABLE_NAME: + '.POSITION_DETAIL_ID', '')" />
  <COL TAG="sql_tables_SQL" EXPRESSION=":sql_tables_SQL: + iif(:vAddJoinTable: = 'Y' and :TABLE_NAME: ='POSITION_COST_DETAIL','\n inner join ' + :FULL_TABLE_NAME: + ' on ' + :vSecondTableA: + '.POSITION_DETAIL_ID = ' + :FULL_TABLE_NAME: + '.POSITION_DETAIL_ID', '')" />
…
to
…
<COL TAG="sql_tables_ORA" EXPRESSION=":sql_tables_ORA: + iif(:vAddJoinTable: = 'Y','\n left outer join ' + PadRight(:FULL_TABLE_NAME:,' ',40) + ' on ' + :vSecondTableA: + '.POSITION_DETAIL_ID = ' + :FULL_TABLE_NAME: + '.POSITION_DETAIL_ID', '')" />
<COL TAG="sql_tables_SQL" EXPRESSION=":sql_tables_SQL: + iif(:vAddJoinTable: = 'Y','\n left outer join ' + PadRight(:FULL_TABLE_NAME:,' ',40) + ' on ' + :vSecondTableA: + '.POSITION_DETAIL_ID = ' + :FULL_TABLE_NAME: + '.POSITION_DETAIL_ID', '')" />
…

This issue was tracked as Item #155546.

Resolved Issuer in_xml_reference Stream Creating Large File
Previously added logic for resolving Issuer Id by Issuer Xrefs generated SQL to return data from the ISSUER_ORGANIZATION table. In cases where an Issuer Object such as Organization, Issuer Relationship, Issuer Rating, or Issuer Role was loading and the incoming file did not contain either Issuer Xrefs, Issuer Id, Currency, Country of Incorporation, Industry Code, or Legal Entity Id, the resolution of the request was generated with an empty where section, resulting in the extract of all records from the ISSUER_ORGANIZATION table.

The eagle_default\in\xml\include\issuer_xref_resolution.inc include was added in order to check for the specified elements. In the case no element was specified, the editcheck or warning will be executed and the resolution will break.

<COL TAG="isDataForIssuerResolutionDefine" EXPRESSION="iif(StringLength(:varXrefIds:) > 0 or StringLength(:varIssuerID:) > 0
  or (StringLength(:tag1172:) > 0 AND (Find(Upper(:varIssuerResolutionOption:),'CURRENCY') != -1 OR Upper(:varIssuerResolutionOption:) = 'MATCH_ALL'))
  or (StringLength(:tag1174:) > 0 AND (Find(Upper(:varIssuerResolutionOption:),'COUNTRY_INCORPORATION') != -1 OR Upper(:varIssuerResolutionOption:) = 'MATCH_ALL'))
  or (StringLength(:tag1155:) > 0 AND (Find(Upper(:varIssuerResolutionOption:),'INDUSTRY_CODE') != -1 OR Upper(:varIssuerResolutionOption:) = 'MATCH_ALL'))
  or (StringLength(:tag5089:) > 0 AND (Find(Upper(:varIssuerResolutionOption:),'LEI') != -1 OR Upper(:varIssuerResolutionOption:) = 'MATCH_ALL')),'1','0')"/>
<EDITCHECK EXPR=":isDataForIssuerResolutionDefine: ='1' or (:isDataForIssuerResolutionDefine: != '1'and :varFailIfUnResolved: != 'Y')" TAG="1144" ERRORMESSAGEEXPR="'Missing Data for Issuer Resolution (No Issuer Xrefs or Legal Entity Id or Country Of Incorporation or Industry Code or Currency define) '"/>
<WARNING EXPR="'Missing Data for Issuer Resolution (No Issuer Xrefs or Legal Entity Id or Country Of Incorporation or Industry Code or Currency define) '" CONDITION=":isDataForIssuerResolutionDefine: !='1'"/>
<BREAK CONDITION=":isDataForIssuerResolutionDefine: != '1'"/>

This issue was tracked as Item #155648.

Updated XSD and Rules Mapping to Add Consistent CustLedgerSource Output
In the WRHSGLDETAILPOSTINGEXTRACT, the CUST_LEDGER_SOURCE:GRAN: value was not present in the output of the streaming file. The non-streaming t_warehouse_gl_detail_posting.xml rule had the ledgerSource, but this entry was missing in the streaming t_warehouse_gl_detail_posting_streaming.inc include.

The following changes were made to fix the missing LedgerSource:
1. The custLedgerSource element was added to the wareouseGLBalance interface in the XSD.
2. The name of the field in the inbound XSLT wrh_egl_gen_interface3.xsl was updated:

<xsl:if test="normalize-space(eagleml:custLedgerSource) !=''">
   <P n="IN_CUST_LEDGER_SOURCE">
   <xsl:value-of select="eagleml:custLedgerSource" />
   </P>
</xsl:if>

3. The mapping was updated in the t_warehouse_gl_detail_posting.xml and t_warehouse_gl_detail_posting_streaming.inc transformation rules.

<COL TAG="124" EXPRESSION="|CUST_LEDGER_SOURCE|" XMLPATH="custLedgerSource" ELEMENTTYPE="XMLNode" />
and
<OUTPUT VAR="CUST_LEDGER_SOURCE" XMLTAG="custLedgerSource"  />

This issue was tracked as Item #155788.

Restored Q_FROM_ISSUER and Q_TO_ISSUER Lookups into the xml-ref_issuerrelationship.xml Rule
Errors were generated specifying missing To Issuer Names in the load_issuer_relationship stream.

The mapping for tag 351 was added to the inbound rule for IssuerRelationship. The eagle_default\in\xml\xml-ref_issuerrelationship.xml rule was modified to reflect these changes.

This issue was tracked as Item #155832.

Enhanced Task Reporter Performance
A flag was required to leverage functionality of checking the JMS stream execution status and collecting errors from the JMS stream to show in the TSR.

Introduced the W_COLLECT_DISTRIBUTION_ERRORS global setting in the w_config_custom.inc file which is able to contain the list of delivery methods whose functionality is capable of checking the availability of the delivery stream status. To disable this check, the following settings can be used:
W_CONFIG_JMS_TSR_RE_TRY_CNT=1
W_CONFIG_CHECK_STATUS_RE_TRY_CNT=1

This issue was tracked as Item #156130.

Modified Forward SMF Logic

The standard loading procedure for forward securities was to load both legs at the same time since the panel would create them simultaneously with the same xreference identifiers.

The logic has now been updated to allow leveraging existing procedures to create each leg separately and include only the sell currency in one leg and only the buy currency on the other as well as adding unique xref identifiers on each leg. 

Additionally logic for the global W_FORWARD_SINGLE_LEG_MODE variable was added. The two values allowed for this variable are Y and N with N being the default value. This was done to expand on the record specific option of using the singleLegLoadFlag with the same possible and default values. This flag can be passed in the inbound SMF message whereas the global parameter is in the w_config.inc file and will work for all Forward SMFs.

This issue was tracked as Item #146212.