Installation Instructions for Hot Fix A4V003

Windows for x64


Hot fix A4V003 addresses the issue(s) in SAS Model Risk Management 7.2 as documented in the Issue(s) Addressed section of the hot fix download page:

http://ftp.sas.com/techsup/download/hotfix/HF2/A4V.html#A4V003


A4V003 is a "container" hot fix that contains the following "member" hot fixes which will update the software components as needed.

A4W003  updates  SAS Model Risk Management Administrative Tools 7.2
A4X003  updates  SAS Model Risk Management Mid-Tier 7.2
A4Y002  updates  SAS Model Risk Management Server 7.2
A4Z003  updates  SAS Model Risk Management Server Configuration 7.2

See What is a container hot fix? in the Hot Fix FAQ for more information about container hot fixes.


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 release number information in the Registry report should match the 'member' release number information provided above for the software components installed on each machine in your deployment.

The hot fix downloaded, A4V003pt.zip, includes the updates required for all components listed above on all applicable operating systems. To apply this hot fix on multiple machines, you can either save A4V003pt.zip on each machine or save it in a network location that is accessible to all machines.

Do NOT extract the contents of A4V003pt.zip. The hot fix installation process will extract the contents as needed.


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.

  5. CONFIGURATION: No automatic configuration scripting is included for this hot fix. If you have previously configured software installed, the SAS Deployment Manager may present a screen where you will see "Apply SAS Hot Fixes" and "Configure SAS Hot Fixes" options. On this screen, you must ensure that the "Configure SAS Hot Fix" option is *not* selected. If this option is automatically selected, please de-select it prior to proceeding with the SAS Deployment Manager Screens. Failure to do so could have unintended consequences when applying this hot fix.


INSTALLATION

Hot Fix A4V003 must be installed on each machine where the updated components of the product, listed above, are installed. During the installation process you may see references to all operating systems for which updates are provided in the hot fix. The installation process will determine the operating system and which component(s) of SAS Model Risk Management 7.2 require updating on the machine. See SAS Note 44810 for more details.

The hot fix will be applied using the SAS Deployment Manager. By default, the SAS Deployment Manager will search in the <SASHOME>\InstallMisc\HotFixes\New directory for hot fixes to be applied, but will also prompt for a location if you have downloaded hot fixes to a different directory.

After downloading A4V003pt.zip, follow the instructions for applying hot fixes in the SAS Deployment Wizard and SAS Deployment Manager 9.4: User's Guide.

Please review the CONFIGURATION Important Note above concerning proper selection of the "Configure SAS Hot Fix" option in the SAS Deployment Manager.


The hot fix installation process generates the log file

<!SASHOME>\InstallMisc\InstallLogs\IT_date-and-time-stamp.log
for example, IT_2011-10-31-13.18.21.log. Each attempt to apply a hot fix results in the creation of a new log file giving detailed information regarding the installation process.

Postexec log files are created after the installation is completed and identifies the files that were added, backed up, changed and removed. These log files include the ‘member’ hot fix id in the name of the file and are also written to the <!SASHOME>\InstallMisc\InstallLogs directory. There is one postexec log for each ‘member’ hot fix applied (member hot fixes are listed at the top of these instructions).


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


POST-INSTALLATION INSTRUCTIONS

SAS Security Updates

SAS Security Updates are applied during the initial installation of your software. In order to maintain the latest level of security offered by SAS, security updates should be applied and/or re-applied after any changes to your software, including installation of hot fixes. The current SAS Security Updates for all releases of SAS are available at http://ftp.sas.com/techsup/download/hotfix/HF2/SAS_Security_Updates.html. Please re-apply security updates in accordance with the SAS Security Updates and Hot Fixes document available on the SAS Security Updates web page.


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

A4W003  updates  SAS Model Risk Management Administrative Tools 7.2
A4X003  updates  SAS Model Risk Management Mid-Tier 7.2
A4Y002  updates  SAS Model Risk Management Server 7.2
A4Z003  updates  SAS Model Risk Management Server Configuration 7.2


A4W003  updates  SAS Model Risk Management Administrative Tools 7.2

NONE


A4X003  updates  SAS Model Risk Management Mid-Tier 7.2

Rebuild and Redeploy Web Applications

This hot fix requires post-installation steps that will update the web application deployed to your application server.

For more information about how to rebuild and redeploy Web Applications, see the SAS® 9.4 Intelligence Platform, Middle-Tier Administration Guide, Chapter 8 Administering SAS Web Applications.

  1. Rebuild Web Applications

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

    Select the appropriate product as the Web Application to Rebuild

  2. Re-start all SAS sessions, daemons, spawners and servers. For more information on the proper order for starting servers, go to SAS® 9.4 Intelligence Platform: System Administration Guide, Fourth Edition and review the section entitled "Starting, Stopping and Checking the Status of Servers".

  3. Redeploy Web Applications

    Redeploy the updated wars to the web application server.



Customization Instruction

Apply the following required customization instructions:

  1. Add the following properties to your customMessages.properties file in the SAS Content Server.

    #################################################
    # MRM/MIP integration changes
    #################################################
    mrm.mip.dev.txt=Development Server
    mrm.mip.prod.txt=Production Server
    customObject1.comments.notesInputDataSets.title.txt=Notes related to Input Data Sets
    customObject2.activity.importModelingSystem.label.txt=Import Modeling System
    customObject2.activity.initiateValidation.label.txt=Initiate Validation
    customObject2.activity.approveForDeployment.label.txt=Approve for Deployment
    customObject2.status.submitforValidation.txt=Submit for Validation
    customObject2.status.validationComplete.txt=Validation Complete
    customObject2.contentManagement.modelingSystemRelatedDocs.title.txt=Modeling System Related Documents
    customObject2.link.modelingSystemRelatedLinks.title.txt=Modeling System Related Links
    customObject2.mip.modelingSystemName.displayName.txt=Modeling System Name
    customObject2.section.importModelingSystem.displayName.txt=Import Modeling System
    customObject2.field.x_usage_excEmbModels.displayName.txt=Exclude import of embedded models from the modeling system?
    customObject2.field.x_usage_excEmbModels.helpTxt.txt=If the option is true, the embedded atomic models in the Modeling System will not be imported into the Model Inventory

    #################################################
    # Custom Add Comment label for MRM Correspondence
    #################################################
    customObject7.application.Comments.txt=Messages
    customObject7.application.addComment.title.txt=Add Message
    customObject7.application.comment.prompt.txt=Please enter your Message
    customObject7.genericComment.field.commentText.displayName.txt=Message
    customObject7.genericComment.field.groupNo.displayName.txt=Message Group
    customObject7.genericComment.field.commentRk.displayName.txt=Message ID

    #################################################
    # New Link Types
    #################################################
    linkType.MRM.usage_dev.name1.txt=Model Developer
    linkType.MRM.usage_dev.description1.txt=Model Developer
    linkType.MRM.usage_dev.help1.txt=Model Developer
    linkType.MRM.usage_dev.name2.txt=Model Usage
    linkType.MRM.usage_dev.description2.txt=Model Usage
    linkType.MRM.usage_dev.help2.txt=Model Usage

  2. Merge the changes in the following Data Loader files from the following directory:
    <SASHOME>\SASModelRiskManagementAdministrativeTools\7.2\dbscripts\data
    with your data loader files in
    <SASCONFIG>\Lev1\Applications\SASModelRiskManagementAdministrativeTools\dbscripts\data.

    After merging the changes, run the data loader files to load the data. (This step should be performed before you make updates to the screen definition files in the following step.)
    A) CustFieldDefns.csv: Added a custom field x_usage_mip (String type) and x_usage_excEmbModels (Boolean type) for Model Usage (customObject2)
    B) LinkTypes.csv: Added a link type usage_dev
    C) NamedLists.csv: Added a named list x_usage_mip_stage_list.
    D) NamedListTranslations.csv:
        x_usage_status.SFA.txt=Submitted for Validation
        x_usage_mip_stage_list.CRE.txt=Create
        x_usage_mip_stage_list.APPR.txt=Validate
        x_usage_mip_stage_list.MRM.txt=Approve Deployment
    E) Remove Model Group and Model Group Member from ModelNotation dimension. You can remove them either through the Administration’s Dimension Browser menu in SAS Model Risk Management or by using the AuxReportingDims data loader to unload the 2 entries with IDs MODEL_GROUP and MODEL_GROUP_MEMBER. Before you do this, make sure that there are no business objects associated with these nodes.

  3. Update your screen definitions with the changes noted below from the following location:
    Download screen definitions from SAS Model Risk Management 7.2 and compare to the ones pushed by the hot fix found in
      < SASHOME>/SASModelRiskManagementAdministrativeTools/7.2/dbscripts/data/screenDefs/html5UiScreenDefs/

    After updating the screen definition files, upload them to SAS Model Risk Management via the Administration menu.

    A) MRM_Correrspondence_CO7.xml:

    Update MRM_Correrspondence_CO7.xml screen's "comments" component label
    From:
      <label><message key="application.Comments.txt" /></label>
    To:
      <label><message key="customObject7.application.Comments.txt" /></label>

    From:
      <field type="component" component-name="ContentManagement" readonly="isScreenReadOnly() and empty(workflow.activity.display)"<<label><message key="customObject7.contentManagement.documents.title.txt" /></label></field>
    To:
      <field type="component" component-name="ContentManagement" readonly="false"<<label><message key="customObject7.contentManagement.documents.title.txt" /><label></field>


    B) Model.xml:

      <field name="TEMP.MODEL_VARS" type="component" component-name="LinkedBusinessObjects" readonly="isScreenReadOnly()" visible="TEMP.NO_MODEL_VARS">
    To:
      <field name="TEMP.MODEL_VARS" type="component" component-name="LinkedBusinessObjects" readonly="isScreenReadOnly()" visible="empty(getNodeByDimension(location, 'StandardProcess', null))">
      <param name="linkTypeSourceSystemCd" value="'MRM'"/>

    Parameter added under comments section:
    <param name="groupNumber" value="1" />

    If you have MIP installed, add the following:
    <if test="neverBeenSaved">
      <set name="TEMP.IS_MIP" value="not empty(getNodeByDimension(projectAreaUsingFeature(currentUser.defaultLocation, 'CustomObject1'), 'StandardProcess', null))" />
    </if>

    <if test="not neverBeenSaved">
      ...
    </if>


    <set-visible name="TEMP.MODEL_VARS" test="not contains(x_mod_form_cd,'constant') AND not contains(x_mod_form_cd,'pdCurves') AND not contains(x_mod_form_cd,'emModel')"/>

    To:

    <set-visible name="TEMP.MODEL_VARS" test="empty(getNodeByDimension(location, 'StandardProcess', null))"/>
    <field type="component" component-name="Comments">
       <label><message key="customObject1.comments.notesInputDataSets.title.txt" /></label>
       <param name="groupNumber" value="2" />
    </field>

    C) ModelTable.xml:

    If you have MIP installed, add the following:
    Add the following HyperLink component from configdata option monitor.mip.dev.url
    <initialize>
       <set name="TEMP.mipDevUrl" value="GetConfigValue('monitor.mip.dev.url')" />
    </initialize>

    New parameter introduced to control if only validated models will be exported to Model Implementation:
    <param name="exportMipModelStatuses" value="'MODEL_VALIDATION_COMPLETE|MODEL_IN_IMPLEMENTATION|ONGOING_M_and_M|MODEL_IMPLEMENTATION_COMPLETE|RET_INITIATED|RET'"/>

     <if test="not empty(TEMP.mipDevUrl)">
       <field type="component" component-name="HyperLink">
       <param name="linkHref" value="TEMP.mipDevUrl"></param>
       <param name="linkText" value="'mrm.mip.dev.txt'"></param>
       <param name="linkTarget" value="'_blank'"></param>
      </field>
     </if>

    D) ModelReview.xml:

    When creating a new Model Review from Usage, copy dev/owner/user from Usage to Model Review’s ModelingTeamMemebers, and MRMG users.
    <set name="Temp.linkingFrom" value="GetPreviousObjectType()" />

     <if test="Temp.linkingFrom = 'modelUsage'">
      <set name="TEMP.user1" value="CopyLinkInstancesFromPrevious('MRM', 'usage_dev', 'MRM', 'modelReview_modelingTeam', true)"/>
      <set name="TEMP.user2" value="CopyLinkInstancesFromPrevious('MRM', 'usage_user', 'MRM', 'modelReview_modelingTeam', true)"/>
      <set name="TEMP.user3" value="CopyLinkInstancesFromPrevious('MRM', 'usage_owner', 'MRM', 'modelReview_modelingTeam', true)"/>
      <set name="TEMP.modelReview_modelingTeam" value="ConcatArray(TEMP.user1,TEMP.user2,TEMP.user3)"/>
      <set name="TEMP.modelReview_MRMG" value="CopyLinkInstancesFromPrevious('MRM', 'usage_MRMG', 'MRM', 'modelReview_MRMG', true)"/>
     </if>

     <if test="Temp.linkingFrom != 'modelUsage'">
      ...
     </if>

    E) ModelUsageTable.xml:

    If you have MIP installed, add the following:
    Add the following HyperLink component from configdata option monitor.mip.prod.url
     <initialize>
      <set name="TEMP.mipProdUrl" value="GetConfigValue('monitor.mip.prod.url')" />
     </initialize>

     <if test="not empty(TEMP.mipProdUrl)">
      <field type="component" component-name="HyperLink">
       <param name="linkHref" value="TEMP.mipProdUrl"></param>
       <param name="linkText" value="'mrm.mip.prod.txt'"></param>
       <param name="linkTarget" value="'_blank'"></param>
      </field>
     </if>

    F) Usage.xml:

    <!-- New parameters introduced to ContentManagement component for Model Implementation: -->
     <param name="remoteFileListingURL" value="'groovyService.jsp?script=listSystemsForImport.groovy'"/>
     <param name="remoteFileTransferURL" value="'groovyService.jsp?script=copySystemForImport.groovy'"/>

    <set-value name="TEMP.usage_developer" value="GetLinkedObjectsUsers(businessObject,'MRM','model_usage', 'MRM','model_dev','MRM','usage_dev')"/>

    <refresh name="TEMP.usage_developer" if="true"/>

    <column-layout>
    <column width="50%">
     <field type="component" name="TEMP.usage_developer" component-name="LinkedBusinessObjects" readonly="isScreenReadOnly()" required="true">
      <param name="linkTypeSourceSystemCd" value="'MRM'" />
      <param name="linkTypeId" value="'usage_dev'" />
      <param name="locationFieldName">location</param>
      <param name="validateUserCapability">U</param>
      <param name="validateUserCapability">R</param>
      <param name="queryProcessor" value="CreateSecureUserQueryProcessor('a')"/>
      <param name="a:showSuperUsers" value="false"/>
      <param name="a:role">MRM: Model Developer</param>
     </field>
    </column>

    <column>
     <field type="component" name="TEMP.usage_MRMG" component-name="LinkedBusinessObjects" readonly="isScreenReadOnly()" required="true">
      <param name="linkTypeSourceSystemCd" value="'MRM'" />
      <param name="linkTypeId" value="'usage_MRMG'" />
      <param name="locationFieldName">location</param>
      <param name="validateUserCapability">U</param>
      <param name="validateUserCapability">R</param>
      <param name="queryProcessor" value="CreateSecureUserQueryProcessor('a')"/>
      <param name="a:showSuperUsers" value="false"/>
      <param name="a:role">MRM: MRMG</param>
     </field>
    </column>
    </column-layout>

    <if test="workflow.status = 'Send for Approval'">
    to
    <if test="workflow.status = 'Send for Approval' or workflow.status = 'Validation Complete'">

    If you have MIP installed, add the following:

    <!-- A new TEMP.mip_stageCD is added. -->

    <set name="TEMP.mip_stageCd" value="TEMP.stageCd" />
    <field name="TEMP.stageCd" type="component" component-name="FlowDiagram" values="GetNamedListLabelValues('x_usage_stage_list')" visible="not TEMP.IS_MIP" />
    <field name="TEMP.mip_stageCd" type="component" component-name="FlowDiagram" values="GetNamedListLabelValues('x_usage_mip_stage_list')" visible="TEMP.IS_MIP" />

    Make updates to the file to differentiate between a traditional Model Usage and a MIP Usage.

    <set name="x_usage_mip" value="if (TEMP.IS_MIP, 'Yes', 'No')" />
    <set name="TEMP.excEmbModels" value="x_usage_excEmbModels" />

    <if test="neverBeenSaved and not TEMP.IS_MIP">
     <set name="TEMP.usage_developer" value="CopyLinkInstancesFromPrevious('MRM', 'model_dev', 'MRM', 'usage_dev', true)"/>
     <set name="TEMP.usage_owner" value="CopyLinkInstancesFromPrevious('MRM', 'model_owner', 'MRM', 'usage_owner', true)"/>
     <set name="TEMP.usage_user" value="CopyLinkInstancesFromPrevious('MRM', 'model_user', 'MRM', 'usage_user', true)"/>
     <set name="TEMP.usage_MRMG" value="CopyLinkInstancesFromPrevious('MRM', 'model_MRMG', 'MRM', 'usage_MRMG', true)"/>
    </if>

    <if test="neverBeenSaved and TEMP.IS_MIP">
     <set name="TEMP.defaultLocation" value="projectAreaUsingFeature(coalesce(previousLocation, GetLatestAreaForFeature('CustomObject2'), currentUser.defaultLocation), 'CustomObject2')"/>
     <set name="TEMP.usage_developer" value="CreateLinkInstance('MRM','usage_dev',businessObject,GetUserTagPointerHandles(GetUserListForLocationAndRoles('TEMP.defaultLocation', 'MRM: Model Developer')),linkedBusinessObjects,true)"/>
     <set name="TEMP.usage_owner" value="CreateLinkInstance('MRM','usage_owner',businessObject,GetUserTagPointerHandles(GetUserListForLocationAndRoles('TEMP.defaultLocation', 'MRM: Model Owner')),linkedBusinessObjects,true)"/>
     <set name="TEMP.usage_user" value="CreateLinkInstance('MRM','usage_user',businessObject,GetUserTagPointerHandles(GetUserListForLocationAndRoles('TEMP.defaultLocation', 'MRM: Model User')),linkedBusinessObjects,true)"/>
     <set name="TEMP.usage_MRMG" value="CreateLinkInstance('MRM','usage_MRMG',businessObject,GetUserTagPointerHandles(GetUserListForLocationAndRoles('TEMP.defaultLocation', 'MRM: MRMG')),linkedBusinessObjects,true)"/>
     </if>

    <set-visible name="custObjDesc" test="not TEMP.IS_MIP" />
    <set-required name="x_usage_ops_is_user_mo_mu" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_ops_is_user_mo_mu" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_product" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_function" test="not TEMP.IS_MIP" />
    <set-required name="x_usage_bol_asmt_req" test="(x_statusCd = 'MDR') and (not TEMP.IS_MIP)" />
    <set-visible name="x_usage_bol_asmt_req" test="not TEMP.IS_MIP" />
    <set-required name="x_usage_ops_legal_review" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_ops_legal_review" test="not TEMP.IS_MIP" />
    <set-required name="x_usage_ops_comp_review" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_ops_comp_review" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_str_bus_case_addr" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_str_bus_impact" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_str_lim_excl" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_str_overl_assum" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_dte_first" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_ops_freq" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_str_loc_mod_out" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_str_loc_strtg_sco" test="not TEMP.IS_MIP" />
    <set-visible name="x_usage_str_rep_gen" test="not TEMP.IS_MIP" />
    <set-visible name="TEMP.polexc_usage" test="not TEMP.IS_MIP" />
    <set-value name="TEMP.usage_developer" value="if (TEMP.IS_MIP, CreateLinkInstance('MRM','usage_dev',businessObject,GetUserTagPointerHandles(GetUserListForLocationAndRoles('location', 'MRM: Model Developer')),linkedBusinessObjects,true), TEMP.usage_developer)"/>
    <set-value name="TEMP.usage_owner" value="if (TEMP.IS_MIP, CreateLinkInstance('MRM','usage_owner',businessObject,GetUserTagPointerHandles(GetUserListForLocationAndRoles('location', 'MRM: Model Owner')),linkedBusinessObjects,true), TEMP.usage_owner)"/>
    <set-value name="TEMP.usage_user" value="if (TEMP.IS_MIP, CreateLinkInstance('MRM','usage_user',businessObject,GetUserTagPointerHandles(GetUserListForLocationAndRoles('location', 'MRM: Model User')),linkedBusinessObjects,true), TEMP.usage_user)"/>
    <set-value name="TEMP.usage_MRMG" value="if (TEMP.IS_MIP, CreateLinkInstance('MRM','usage_MRMG',businessObject,GetUserTagPointerHandles(GetUserListForLocationAndRoles('location', 'MRM: MRMG')),linkedBusinessObjects,true), TEMP.usage_MRMG)"/>

    <set-visible name="x_mip_ms_name_str" test="TEMP.IS_MIP" />
    <set-visible name="x_mip_ms_version_str" test="TEMP.IS_MIP" />
    <set-visible name="x_mip_ms_desc_str" test="TEMP.IS_MIP" />

    <set-visible name="TEMP.modelingSystem" test="TEMP.IS_MIP" />
    <set-visible name="TEMP.modelGroup" test="TEMP.IS_MIP" />

    <set-visible name="TEMP.stageCd" test="not TEMP.IS_MIP" />
    <set-visible name="TEMP.mip_stageCd" test="TEMP.IS_MIP" />

    <set-visible name="TEMP.importModelingSystemSection" test="TEMP.IS_MIP" />
    <set-visible name="x_usage_excEmbModels" test="TEMP.IS_MIP and (size(CONTENTATTACHMENTS200) = 0)" />
    <set-visible name="TEMP.excEmbModels" test="TEMP.IS_MIP and (size(CONTENTATTACHMENTS200) > 0)" />
    <set-visible name="TEMP.modelingSystem" test="TEMP.IS_MIP and (not empty(x_usage_excEmbModels))" />
    <set-visible name="TEMP.modelGroup" test="TEMP.IS_MIP and (not empty(x_usage_excEmbModels) and (not x_usage_excEmbModels))" />
    <set-visible name="TEMP.usageDocs" test="not TEMP.IS_MIP" />
    <set-visible name="TEMP.usageLinks" test="not TEMP.IS_MIP" />
    <set-visible name="TEMP.msDocs" test="TEMP.IS_MIP" />
    <set-visible name="TEMP.msLinks" test="TEMP.IS_MIP" />

    <set-required name="TEMP.usage_user" test="not TEMP.IS_MIP" />

    <label><message key="customObject2.field.custObjNm.displayName.txt"/></label>
    </field>
    <field name="x_mip_ms_name_str" type="string" readonly="true" visible="TEMP.IS_MIP">
     <label><message key="customObject2.mip.modelingSystemName.displayName.txt"/></label>
    </field>

    <field name="x_mip_ms_version_str" type="string" readonly="true" visible="TEMP.IS_MIP" >
    <label><message key="customObject2.field.x_mip_ms_version_str.displayName.txt" /></label>

    <field name="x_mip_ms_desc_str" type="textarea" readonly="true" visible="TEMP.IS_MIP" >
     <label><message key="customObject2.field.x_mip_ms_desc_str.displayName.txt" /></label>
    </field>

    <field name="custObjDesc" type="textarea" visible="not TEMP.IS_MIP" >

    <field name="x_usage_ops_is_user_mo_mu" type="dropdown" required="not TEMP.IS_MIP" visible="not TEMP.IS_MIP" >

    <field name="x_usage_product" type="string" visible="not TEMP.IS_MIP" >

    <field name="x_usage_function" type="string" visible="not TEMP.IS_MIP" >

    <field name="x_usage_bol_asmt_req" type="boolean" required="(x_statusCd = 'MDR') and (not TEMP.IS_MIP)" visible="not TEMP.IS_MIP" >

    <section id="TEMP.importModelingSystemSection" expanded="true" visible="TEMP.IS_MIP">
    <label><message key="customObject2.section.importModelingSystem.displayName.txt" /></label>

    <field name="x_usage_excEmbModels" type="boolean" visible="TEMP.IS_MIP and (size(CONTENTATTACHMENTS200) = 0)">
     <label><message key="customObject2.field.x_usage_excEmbModels.displayName.txt"/></label>
     <help-text><message key="customObject2.field.x_usage_excEmbModels.helpTxt.txt" /></help-text>
     <on-change>
      <set-value name="TEMP.excEmbModels" value="x_usage_excEmbModels" />
      <set-visible name="TEMP.modelingSystem" test="not empty(x_usage_excEmbModels)" />
      <set-visible name="TEMP.modelGroup" test="(not empty(x_usage_excEmbModels)) and (not x_usage_excEmbModels)" />
     </on-change>
    </field>

    <field name="TEMP.excEmbModels" type="boolean" readonly="true" visible="TEMP.IS_MIP and (size(CONTENTATTACHMENTS200) > 0)">
     <label><message key="customObject2.field.x_usage_excEmbModels.displayName.txt"/></label>
     <help-text><message key="customObject2.field.x_usage_excEmbModels.helpTxt.txt" /></help-text>
    </field>

    <field type="component" name="TEMP.modelingSystem" component-name="ContentManagement" readonly="(isScreenReadOnly() and empty(workflow.activity.display)) or neverBeenSaved or (TEMP.stageCd != 'CRE')" visible="TEMP.IS_MIP and (not empty(x_usage_excEmbModels))" >
     <label><message key="customObject2.contentManagement.mip.modelingSystem.displayName.txt" /></label>  <param name="maxRows" value="1" />
     <param name="canUpdateContent" value="false" />
     <param name="groupNumber" value="200" />
     <param name="handleRichText" value="false"/>
     <param name="visibleRows" value="2" />
     <param name="remoteFileListingURL" value="'groovyService.jsp?script=listSystemsForImport.groovy'"/>
     <param name="remoteFileTransferURL" value="'groovyService.jsp?script=copySystemForImport.groovy'"/>
     <on-change>
      <set-value name="TEMP.msSummary" value="readTextFrom(extractFile(CONTENTATTACHMENTS200, 'modeling_system_summary.jexp'))" />
      <set-value name="TEMP.mipModelInfo" value="readTextFrom(extractFile(CONTENTATTACHMENTS200, 'model.jexp'))" />   <set-value name="TEMP.modelGroup" value="handleModelSystem(TEMP.msSummary, TEMP.mipModelInfo, x_usage_excEmbModels, false)" />
      <set-value name="x_mip_ms_name_str" value="getValueFromJSONObject(TEMP.msSummary, 'name')" />
      <set-value name="x_mip_ms_desc_str" value="getValueFromJSONObject(TEMP.msSummary, 'description')" />
      <set-value name="x_mip_ms_version_str" value="getValueFromJSONObject(TEMP.msSummary, 'version')" />
      <set-visible name="x_usage_excEmbModels" test="TEMP.IS_MIP and (size(CONTENTATTACHMENTS200) = 0)" />
      <set-visible name="TEMP.excEmbModels" test="TEMP.IS_MIP and (size(CONTENTATTACHMENTS200) > 0)" />
     </on-change>
    </field>

    <field type="component" name="TEMP.modelGroup" component-name="LinkedBusinessObjects" readonly="true" visible="TEMP.IS_MIP and (not empty(x_usage_excEmbModels) and (not x_usage_excEmbModels))" >
     <param name="linkTypeSourceSystemCd" value="'MRM'"/>
      <param name="linkTypeId" value="'usage_modelGroup'"/>
    </field>
    </section>
    </column>
    </column-layout>

    From:
     <field name="x_usage_ops_legal_review" type="dropdown" required="true" >
    To:
     <field name="x_usage_ops_legal_review" type="dropdown" required="not TEMP.IS_MIP" visible="not TEMP.IS_MIP" >

    From:
     <field name="x_usage_ops_comp_review" type="dropdown" required="true" >
    To:
     <field name="x_usage_ops_comp_review" type="dropdown" required="not TEMP.IS_MIP" visible="not TEMP.IS_MIP" >

    From:
     <field name="x_usage_str_bus_case_addr" type="string" >
    To:
     <field name="x_usage_str_bus_case_addr" type="string" visible="not TEMP.IS_MIP" >

    From:
     <field name="x_usage_str_bus_impact" type="string" >
    To:
     <field name="x_usage_str_bus_impact" type="string" visible="not TEMP.IS_MIP" >

    From:
     <field name="x_usage_str_lim_excl" type="string" >
    To:
     <field name="x_usage_str_lim_excl" type="string" visible="not TEMP.IS_MIP" >

    From:
     <field name="x_usage_str_overl_assum" type="string" >
    To:
     <field name="x_usage_str_overl_assum" type="string" visible="not TEMP.IS_MIP" >

    From:
     <field name="x_usage_dte_first" type="date" >
    To:
     <field name="x_usage_dte_first" type="date" visible="not TEMP.IS_MIP" >

    From:
     <field name="x_usage_ops_freq" type="dropdown" >
    To:
     <field name="x_usage_ops_freq" type="dropdown" visible="not TEMP.IS_MIP" >

    From:
     <field name="x_usage_str_loc_mod_out" type="string" >
    To:
     <field name="x_usage_str_loc_mod_out" type="string" visible="not TEMP.IS_MIP" >

    From:
     <field name="x_usage_str_loc_strtg_sco" type="string" >
    To:
     <field name="x_usage_str_loc_strtg_sco" type="string" visible="not TEMP.IS_MIP" >

    From:
    <field name="x_usage_str_rep_gen" type="string" >
    To:
    <field name="x_usage_str_rep_gen" type="string" visible="not TEMP.IS_MIP" >

    From:
     <param name="linkTypeId" value="'usage_finding'"/>
    To:
     <param name="linkTypeId" value="'usage_modelReview'"/>

    From:
     <param name="linkTypeId" value="'usage_actionPlan'"/>
    To:
     <param name="linkTypeId" value="'usage_finding'"/>

    From:
     <param name="linkTypeId" value="'usage_modelReview'"/>
    To:
     <param name="linkTypeId" value="'usage_actionPlan'"/>

    From:
     <field type="component" component-name="LinkedBusinessObjects" readonly="isScreenReadOnly()">
    To:
     <field type="component" name="TEMP.polexc_usage" component-name="LinkedBusinessObjects" readonly="isScreenReadOnly()" visible="not TEMP.IS_MIP">

    From:
     <field type="component" component-name="ContentManagement" readonly="isScreenReadOnly() and empty(workflow.activity.display)">
    To:
     <field name="TEMP.usageDocs" type="component" component-name="ContentManagement" readonly="isScreenReadOnly() and empty(workflow.activity.display)" visible="not TEMP.IS_MIP">

    <field name="TEMP.msDocs" type="component" component-name="ContentManagement" readonly="isScreenReadOnly() and empty(workflow.activity.display)" visible="TEMP.IS_MIP">
     <label><message key="customObject2.contentManagement.modelingSystemRelatedDocs.title.txt" /></label>
    </field>

    <field name="TEMP.usageLinks" type="component" component-name="Attachments" visible="not TEMP.IS_MIP">
     <label><message key="customObject2.link.modelUSageRelatedLinks.title.txt" /></label>
    </field>

    <field name="TEMP.msLinks" type="component" component-name="Attachments" visible="TEMP.IS_MIP">
     <label><message key="customObject2.link.modelingSystemRelatedLinks.title.txt" /></label>
    </field>

  4. For SAS Model Risk Management and Model Implementation Platform integration, assume there are two environments set up for Model Implementation Platform: server A for development, and server B for production. In this scenario, Model Risk Management resides on server B for production.

    Please request your IT department to mount a directory from server A to server B.

    Our recommended setup:

    On server B:

  5. On the SAS Content Server, update configdata.properties with the following new values:

  6. Changes were made to dimensionality.xml to remove multi node selection for the workgroup dimension and to add BusinessUnit dimension to CustomObject17, i.e. Model group. Merge changes for the dimensionality.xml in the WebDAV repository from
    <SASHome>\SASModelRiskManagementMidTier\7.2\Config\Deployment\Content\Preload\Config to the SAS Content Server.

  7. MainNavigationMenu.xml: Merge changes for the MainNaviagtionMenu.xml in the WebDAV repository from
    <SASHome>\SASModelRiskManagementMidTier\7.2\Config\Deployment\Content\Preload\Config\Menus to the SAS Content Server

    Model Usage menu item is moved from Model Review to Model Inventory.
         <!-- Model Usage -->
         <item id="customObject2Query" visible="isVisible_customObject2()">
         <label>
         <message key="customObject2.query.header.title" />
         </label>
         <url><eval>getTableUrl('customObject2')</eval></url>
         <image src="MODELRETRAIN"></image>
         </item>

  8. Merge the changes to SAS_MRM_Model_Usage.xml Workflow template from the following location:
    <SASHome>\SASModelRiskManagementMidTier\7.2\Config\Deployment\Content\Templates
    Changes were made to accommodate both traditional Model Usage and MIP Usage. A Create subprocess is added and connected to the "Usage status equals?" decision node. "Is MIP related?" decision node is added. A new subprocess "MIP Model Subflow" is added to accommodate MIP Model Usage.
    Upload and activate the updated workflow template.

  9. Upload the following new notification templates from
    <SASHome>\SASModelRiskManagementMidTier\7.2\Config\Deployment\Content\Templates\notification\en:
        SAS_MRM_ALERT_USAGE_NOTIFY_APPROVE_DEPLOYMENT.st
        SAS_MRM_ALERT_USAGE_NOTIFY_VALIDATED.st

  10. Copy .groovy scripts to the WebDAV repository.
    Copy the following files from <SASHome>\SASModelRiskManagementMidTier\7.2\Config\Deployment\Content\Preload\Scripts to the SAS Content Server. Place them under the folder \SASContentServer\repository\default\sasdav\Products\SASModelRisk\ModelRIskMgtMid-Tier\Scripts.
        a) listSystemsForImport.groovy
        b) copySystemForImport.groovy
        c) exportModelsForImpl.groovy

    After adding the scripts to the WebDAV repository, restart the MRM application server, or flush caches.


    A4Y002  updates  SAS Model Risk Management Server 7.2

    NONE


    A4Z003  updates  SAS Model Risk Management Server Configuration 7.2

    Installation and Configuration

    1. Copy the following files from <SASHOME> to <SASCONFIGDIR>
      <SASHOME>\SASFoundation\9.4\mrmsvr\sasmisc\control\grid_properties.txt
      <SASHOME>\SASFoundation\9.4\mrmsvr\sasstp\mrm_export_mip_data.sas.orig
      <SASHOME>\SASFoundation\9.4\rskmgtsvr\sasmisc\control\grid_host.map
      <SASHOME>\SASFoundation\9.4\rskmgtsvr\sasmisc\control\grid_port.map
      <SASHOME>\SASFoundation\9.4\rskmgtsvr\ucmacros\rskmgt_get_grid_props.sas.orig
      to
      <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\sasmisc\control\grid_properties.txt
      <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\sasmisc\control\grid_host.map
      <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\sasmisc\control\grid_port.map
      <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\sasstp\mrm_export_mip_data.sas.orig
      <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\ucmacros\rskmgt_get_grid_props.sas.orig

    2. Delete the "grid_properties.sas7bdat" dataset if it exist. This file should be located here:
      <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Libraries\mrmcntl

    3. Delete the "grid_host_port.map" file in the following directory:
      <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\sasmisc\control

    4. Replace tokens w/ directory paths:
      A) Using a text editor, replace the tokens in the files with the paths listed below.
      i) File: <SASCONFIGDIR>>\Applications\SASModelRiskManagementServer\Source\sasstp\mrm_export_mip_data.sas.orig
      Token 1: @UCMACRO_PATH@
      Path: <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\ucmacros

      Token 2: @CNTLFILEDIR@
      Path: <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\sasmisc\control

      ii) File: <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\ucmacros\rskmgt_get_grid_props.sas.orig
      Token @PRODUCT_MAC_PREFIX@
      Text: mrm

      B) Make a back-up copy of the existing ".sas" files

      C) Rename the file extensions from ".sas.orig" to ".sas" by dropping the ".orig" file extensions.

    5. Copy hotfix control files from <SASHOME> to <SASCONFIGDIR>:

      Copy the file below from:
      <SASHOME>\SASFoundation\9.4\mrmsvr\sasmisc\control\mip_export_path.txt
      TO:
      <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\sasmisc\control\mip_export_path.txt

    6. Replace tokens w/ Model Implementation Platform mount directory:

      Using a text editor, replace the tokens in the file with the path listed below.
      File List:
      <SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\sasmisc\control\mip_export_path.txt

      Token 1: @MIP_EXPORT_DIR@
      Replace the above token with the mount point created in Mid-tier post install step #4
             For example:
              <SASCONFIGDIR>\Applications\SASModelImplementationPlatform\mip_mount\machine001

    7. Import the MRM_MIP_Export.spk file
      A) Open the SAS Management Console as a user account that is in the SAS Administrators Group.
      B) Click on the Folders tab on the left side of the screen.
      C) Go to SAS Folders --> Products. Right click on the "SAS Model Risk Management" folder on the left side of the screen.
      D) Click on "Import SAS Package".
      E) For the "Enter the location of the input SAS Package file:" prompt, click on the browse button and navigate to the following directory and import the following file:
         <SASHOME>\SASModelRiskManagementServerConfiguration\7.2\Config\Deployment\Packages\MRM_MIP_Export.spk
      F) Leave the "Import Options" and "Select objects to import" to their default values. Click on the Next button.
      G) On the "Select Objects to Import" screen, click the Next button.
      H) On the "About Metadata Connections" screen, click on the Next button.
      I) On the "SAS Application Servers" screen, validate the SAS Application Servers "Target" value is set to "SASApp".
      If it is not, please change it to "SASApp" by using the drop down to change the value. Click Next.
      J) On the "Source Code Repositories" screen, validate the "Target SAS Application Server: SASApp" is set to your "<SASCONFIGDIR>\Applications\SASModelRiskManagementServer\Source\sasstp" directory. If it is not set, click the drop down and select this path. Click Next.
      K) On the "Summary" screen, review your selections to ensure you have made the correct selections.
      If not, you can use the "Back" button to make changes. If your selections appear to be correct, click the Next button to update metadata with your selections.
      L) Once complete, click the Finish button to close the window.

    8. At the end of applying the post-installation instructions, restart the SASServer8_1 web application server to pick up changes to dimensionality.xml

    9. Start the Model Risk Mgt LASR Analytic Server via the SAS Visual Analytics Administrator application.

    10. Run one of the load ETL jobs in SAS Management Console --> Schedule Manager, verify the MRMLASR server libname is being assigned and the LASR data sources are being loaded.



    This completes the installation of hot fix A4V003 on Windows for x64.


    Copyright 2019 SAS Institute Inc. All Rights Reserved.