Installation Instructions for Hot Fix A4V002
Linux for x64
Hot fix A4V002 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#A4V002
A4V002 is a "container" hot fix that contains the following "member" hot fixes which will update the software components
as needed.
A4W002 updates SAS Model Risk Management Administrative Tools 7.2
A4X002 updates SAS Model Risk Management Mid-Tier 7.2
A4Y002 updates SAS Model Risk Management Server 7.2
A4Z002 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, A4V002pt.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
A4V002pt.zip on each machine or save it in a network location that is accessible to all machines.
Do NOT extract the contents of A4V002pt.zip. The hot fix installation process will extract the contents
as needed.
IMPORTANT NOTES
-
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.
-
You must have Administrator Privileges on your CLIENT or SERVER machine.
-
All currently active SAS sessions, daemons, spawners and servers must be terminated
before applying this hot fix.
-
This hot fix should be installed using the same userid who performed the initial
software installation.
-
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 A4V002 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 A4V002pt.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.
For each product installed, click the link to be redirected to post-installation instructions.
A4W002 updates SAS Model Risk Management Administrative Tools 7.2
A4X002 updates SAS Model Risk Management Mid-Tier 7.2
A4Y002 updates SAS Model Risk Management Server 7.2
A4Z002 updates SAS Model Risk Management Server Configuration 7.2
A4W002 updates SAS Model Risk Management Administrative Tools 7.2
NONE
A4X002 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.
-
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
-
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".
-
Redeploy Web Applications
Redeploy the updated wars to the web application server.
Customization Instruction
Apply the following required customization instructions:
-
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
-
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.
-
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>
-
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:
-
A) create a directory under
<SASCONFIG>/Lev1/AppData/SASModelRiskManagement/mip_mount/<server A's hostname >
for example, "/install/cfgsas1/SASConfig/Lev1/AppData/SASModelRiskManagement/mip_mount/machine001"
-
B) Mount the directory to server A's
<SASCONFIG>/Lev1/AppData/SASModelImplementationPlatform directory.
This mounted directory allows Model Risk Manager to seamlessly export Models and import Modeling
Systems to the development environment of Model Implementation Platform.
Note that you may specify a directory that is mounted to a remote file system, if you wish to import modeling systems
from a different deployment. However, the specified folder must resolve to the root MIP AppData folder, and the user
running the MRM application server must have permission to read that directory.
-
On the SAS Content Server, update configdata.properties with the following new values:
-
A) mip.import.rootFolder=<importFolder> where <importFolder> is the directory on server B that is
mapped to remote folder in server A to scan for modeling systems to import, typically
$SASCONFIG/Lev1/AppData/SASModelImplementationPlatform. (see 3a)
-
B) monitor.mip.dev.url=<URL for development environment of Model Implementation Platform>
-
C) monitor.mip.prod.url=<URL for production environment of Model Implementation Platform>
Sample values:
#################################################
# MRM/MIP integration changes
#################################################
mip.import.rootFolder=/install/cfgsas1/SASConfig/Lev1/AppData/SASModelRiskManagement/mip_mount/machine001
monitor.mip.dev.url=http://machine001.race.sas.com:7980/SASModelImplementationPlatform/index.jsp
monitor.mip.prod.url=http://machine002.race.sas.com:7980/SASModelImplementationPlatform/index.jsp
-
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.
-
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>
-
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.
-
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
-
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
A4Z002 updates SAS Model Risk Management Server Configuration 7.2
Installation and Configuration
-
Copy the following files from <SASHOME> to <SASCONFIGDIR>
<SASHOME>/SASFoundation/9.4/misc/mrmsvr/control/grid_properties.txt
<SASHOME>/SASFoundation/9.4/sasstp/mrmsvr/mrm_export_mip_data.sas.orig
<SASHOME>/SASFoundation/9.4/misc/rskmgtsvr/control/grid_host.map
<SASHOME>/SASFoundation/9.4/misc/rskmgtsvr/control/grid_port.map
<SASHOME>/SASFoundation/9.4/ucmacros/rskmgtsvr/rskmgt_get_grid_props.sas.orig
to
<SASCONFIGDIR>/Applications/SASModelRiskManagementServer/Source/misc/control/grid_properties.txt
<SASCONFIGDIR>/Applications/SASModelRiskManagementServer/Source/misc/control/grid_host.map
<SASCONFIGDIR>/Applications/SASModelRiskManagementServer/Source/misc/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
-
Delete the "grid_properties.sas7bdat" dataset if it exist. This file should be located here:
<SASCONFIGDIR>/Applications/SASModelRiskManagementServer/Libraries/mrmcntl
-
Delete the "grid_host_port.map" file in the following directory:
<SASCONFIGDIR>/Applications/SASModelRiskManagementServer/Source/misc/control
-
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/misc/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.
-
Copy hotfix control files from <SASHOME> to <SASCONFIGDIR>:
Copy the file below from:
<SASHOME>/SASFoundation/9.4/misc/mrmsvr/control/mip_export_path.txt
TO:
<SASCONFIGDIR>/Applications/SASModelRiskManagementServer/Source/misc/control/mip_export_path.txt
-
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/misc/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
-
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.
-
At the end of applying the post-installation instructions, restart the SASServer8_1 web application
server to pick up changes to dimensionality.xml
-
Start the Model Risk Mgt LASR Analytic Server via the SAS Visual Analytics Administrator application.
-
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 A4V002 on Linux for x64.
Copyright 2018 SAS Institute Inc. All Rights Reserved.