Wednesday 6 July 2016

Installing InfoSphere Master Data Management v11.5 on WAS Cluster with SQL Server (Windows authentication)



InfoSphere Master Data Management can be installed on a SQL Server database that uses Windows authentication.   With Windows authentication, SQL Server validates the account name and password using the Windows principal token in the operating system. SQL Server does not ask for the password, and does not perform the identity validation.  Tables created using Windows authentication are in the default schema.  During installation of SQL Server, the default schema is set to dbo (DataBase Owner), this can be modified by the SQL Server DBA.

Pre-requisites
Ensure that the pre-requisites for MDM installation are followed including:
  1. Installation of WebSphere Application Server and creation of WAS Cluster for installation
  2. Installation of Microsoft SQL Server 2014.
  3. Follow steps mentioned in Preparing a Microsoft SQL Server Database for MDM Installation  
  4. Installation of Microsoft VC++

Installation
In this sample, the IBM Installation Manager will be invoked in silent mode and an input file containing parameters for installation will be passed in.  Please find the sample input file at the Appendix.  The input file provides details required for installation such as installation location, WebSphere Application Server details and Database Details and details on features that have to be installed.  The sample input file contains details to install the MDM Applications, MDM Database and the Inspector UI.  

Since installation is on SQL Server using Windows authentication, in the input file, the database user name and database password have to be set to none (case-sensitive).  The value for schema should be set to dbo (or the default schema)
 
Invoke the Installation Manager with the below parameters:
C:\Program Files (x86)\IBM\InstallationManager\eclipse\IBMIM –silent –input C:\Input\WASNDSQL.xml –acceptLicense

The above command enables extraction of MDM files at the MDM installation directory provided in the input file.  Certain pre-requisites to ensure successful configuration of MDM are also performed as part of this command.  

Please Note: The sample input file attached has minimal inputs and was generated using http://ibminfospheremdminputfilegenerator.mybluemix.net

Configuration
After Master Data Management components are extracted using the Installation Manager, MDM has to be deployed using the utility Configure_MasterDataManagement.
  1. Go to <MDM_INSTALL_DIR>/mds/scripts
  2. Invoke madconfig Configure_MasterDataManagement
  3. Provide values including WebSphere Administrator user’s password, MDM Administrator user’s password and the WebSphere Administrator user’s password for each UI selected to be installed.  Please note that the value for Database user password will not prompted as Windows authentication is used.
The utility creates the database tables and loads them with MDM gold data, deploys applications on the WAS Cluster and deploys the User Interfaces on the WAS Cluster. 

Post Configuration
  1. Ensure that the IVT is successful by checking the response file in <MDM_INSTALL_DIR>/IVT/testCases/xml_virtual/response
  2. When WebSphere Embedded Messaging is used, certain configuration changes have to be performed at the Messaging Engine.  Go to Service Integration -> Buses -> <BUS> -> Messaging engines -> <MESSAGING_ENGINE> -> Data store.
    1. Set the value for Schema name to dbo (or the customized default schema)
    2. Set the value for Authentication Alias to (none)
    3. Restart the cluster, SIB tables will get created in the database.

Changes to Data Store when WebSphere Embedded Messaging is used

Sample Input File
 <?xml version='1.0' encoding='UTF-8'?>
<agent-input>
  <variables>
    <!-- Shared directory for use by Installation Manager -->
    <variable name='sharedLocation' value='D:/Instances/Shared'/>
  </variables>
  <server>
    <!-- Location of MDM Installable -->
    <repository location='D:/Installables/MDMGA/MDM/disk1'/>
  </server>
  <!-- Profile details, provide id with MDM INSTALL LOCATION-->
  <profile id='InfoSphere MDM Standard Edition or Advanced Edition' installLocation='D:/Instances/Cluster/MDM'>
    <!-- MDM INSTALL LOCATION -->
    <data key='eclipseLocation' value='D:/Instances/Cluster/MDM'/>
    <data key='user.import.profile' value='false'/>
    <!-- OFFERING ID for MDM -->
    <data key='user.mdm.edition.offering.id' value='com.ibm.mdm.advanced'/>
    

<!-- List of MDM features to be installed - db for database, app for application and inspector for Inspector User Interface -->
    <data key='user.L2.mdm.new.selected.feature.list,com.ibm.mdm.advanced' value='db,app,inspector'/>
     
<!-- WebSphere Application Server details for Installing MDM application components, namely native.ear, EBA and web services -->
    <data key='user.L2.was.node.client.trust.file.url,com.ibm.mdm.advanced' value='/etc/DummyClientTrustFile.jks'/>
    <data key='user.L2.was.truststore.pwd,com.ibm.mdm.advanced' value='WebAS'/>
    <data key='user.L2.was.admin.user,com.ibm.mdm.advanced' value='mdmadmin'/>
    <data key='user.L2.was.admin.password,com.ibm.mdm.advanced' value='mdmadmin'/>
    <data key='user.L1.was.home,com.ibm.mdm.advanced' value='C:/Program Files (x86)/IBM/WebSphere/AppServer'/>
    <data key='user.was.type,com.ibm.mdm.advanced' value='ND'/>
    <data key='user.deploy.host,com.ibm.mdm.advanced' value='localhost'/>
    <data key='user.deploy.port,com.ibm.mdm.advanced' value='8879'/>
    <data key='user.was.cell,com.ibm.mdm.advanced' value='chitiyerCell01'/>
    <data key='user.was.node,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.server,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.server.new,com.ibm.mdm.advanced' value='none'/>
    <data key='user.new.server.checkbox,com.ibm.mdm.advanced' value='false'/>
    <data key='user.L1.was.home,com.ibm.mdm.advanced' value='C:/Program Files (x86)/IBM/WebSphere/AppServer'/>
    <data key='user.was.cluster,com.ibm.mdm.advanced' value='MDMCluster'/>
    <data key='user.was.cluster.flag,com.ibm.mdm.advanced' value='true'/>
    <data key='user.was.user,com.ibm.mdm.advanced' value='wasadmin'/>
    <data key='user.was.password,com.ibm.mdm.advanced' value='wasadmin'/>

    <!-- Database details for Installing MDM -->
    <data key='user.L2.mdm.data.type,com.ibm.mdm.advanced' value='insurance'/>
    <data key='user.db.type,com.ibm.mdm.advanced' value='MSSQLU'/>
    <data key='user.db.name,com.ibm.mdm.advanced' value='MDMDB'/>
    <data key='user.db.host,com.ibm.mdm.advanced' value='localhost'/>
    <data key='user.db.port,com.ibm.mdm.advanced' value='1433'/>
    <!-- Please ensure that the value for user.db.user and user.db.password are none since Windows authentication is used -->
    <data key='user.db.user,com.ibm.mdm.advanced' value='none'/>
    <data key='user.db.password,com.ibm.mdm.advanced' value='none'/>
    <!-- This flag indicates Windows native authentication is used -->
    <data key='user.db.auth.native,com.ibm.mdm.advanced' value='true'/>
    <!-- The default schema name is specified -->
    <data key='user.db.schema,com.ibm.mdm.advanced' value='dbo'/>

    <data key='user.db.filegroup,com.ibm.mdm.advanced' value='MDMDBFG'/>
    <data key='user.db.servername,com.ibm.mdm.advanced' value='#SQLSERVER_NAME#'/>
    <data key='user.code.lang.list,com.ibm.mdm.advanced' value='en'/>
    <data key='user.code.lang.list.mds,com.ibm.mdm.advanced' value='en'/>
    <data key='user.customer.lang.type,com.ibm.mdm.advanced' value='en'/>
    <data key='user.db.ssl.enabled,com.ibm.mdm.advanced' value='false'/>
    <data key='user.db.ssl.file.path,com.ibm.mdm.advanced' value='none'/>
    <data key='user.db.ssl.password,com.ibm.mdm.advanced' value='none'/>
    <data key='user.db.ssl.store.type,com.ibm.mdm.advanced' value='none'/>
    <data key='user.db.custom.properties.install.jdbc,com.ibm.mdm.advanced' value='none'/>
    <data key='user.db.custom.properties.install.odbc,com.ibm.mdm.advanced' value='none'/>
    <data key='user.db.custom.properties.datasource.native,com.ibm.mdm.advanced' value='none'/>
    <data key='user.db.custom.properties.datasource.dd,com.ibm.mdm.advanced' value='none'/>

    <!-- Parameters for MDM application Configuration -->
    <data key='user.insensitive.search,com.ibm.mdm.advanced' value='true'/>
    <data key='user.was.application,com.ibm.mdm.advanced' value='ES'/>
    <data key='user.instance.identifier,com.ibm.mdm.advanced' value='ES'/>
    <data key='user.mtz.enabled,com.ibm.mdm.advanced' value='true'/>
    <data key='user.mtz.tz,com.ibm.mdm.advanced' value='Asia/Calcutta'/>
    <data key='user.rmi.port,com.ibm.mdm.advanced' value='9999'/>
    <data key='user.L2.engine.type,com.ibm.mdm.advanced' value='PME'/>
  
    <!-- Messaging details, WebSphere Embedded Messaging is used here and WMQ details here are ignored -->
    <data key='user.L2.messaging.type,com.ibm.mdm.advanced' value='WEM'/>
    <data key='user.default.messaging.flag,com.ibm.mdm.advanced' value='true'/>
    <data key='user.L2.messaging.host,com.ibm.mdm.advanced' value='localhost'/>
    <data key='user.L2.messaging.port,com.ibm.mdm.advanced' value='1414'/>
    <data key='user.L2.messaging.user,com.ibm.mdm.advanced' value='none'/>
    <data key='user.L2.messaging.password,com.ibm.mdm.advanced' value='none'/>
    <data key='user.L2.messaging.qm,com.ibm.mdm.advanced' value='E001'/>
    <data key='user.L2.messaging.channel,com.ibm.mdm.advanced' value='CH.E001'/>
    <data key='user.L2.messaging.transport,com.ibm.mdm.advanced' value='Client'/>
    <data key='user.L2.messaging.home,com.ibm.mdm.advanced' value='/opt/IBM/MQ'/>
    <data key='user.L2.mq.version,com.ibm.mdm.advanced' value='7.5'/>
    <data key='user.config.messaging.server,com.ibm.mdm.advanced' value='false'/>
  
   
      
    <!-- Details of WebSphere Application Server for Business Administrator UI installation -->
    <!-- In this sample these details will be ignored as BA UI is not selected for installation -->
    <!-- To install BA UI add ba to value for key user.L2.mdm.new.selected.feature.list,com.ibm.mdm.advanced and -->
    <!-- com.ibm.mdm.ba.webapp.feature to the features attribute in offering tag under install -->

    <data key='user.was.type.ba,com.ibm.mdm.advanced' value='ND'/>
    <data key='user.deploy.port.ba,com.ibm.mdm.advanced' value='8879'/>
    <data key='user.deploy.host.ba,com.ibm.mdm.advanced' value='localhost'/>
    <data key='user.was.home.ba,com.ibm.mdm.advanced' value='C:/Program Files (x86)/IBM/WebSphere/AppServer'/>
    <data key='user.was.cell.ba,com.ibm.mdm.advanced' value='chitiyerCell01'/>
    <data key='user.was.node.ba,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.server.ba,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.new.server.ba,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.new.server.check.ba,com.ibm.mdm.advanced' value='false'/>
    <data key='user.was.cluster.ba,com.ibm.mdm.advanced' value='MDMCluster'/>
    <data key='user.was.cluster.flag.ba,com.ibm.mdm.advanced' value='true'/>
    <data key='user.was.security.ba,com.ibm.mdm.advanced' value='1'/>
    <data key='user.was.security.on.off.ba,com.ibm.mdm.advanced' value='on'/>
    <data key='user.was.user.ba,com.ibm.mdm.advanced' value='wasadmin'/>
    <data key='user.was.password.ba,com.ibm.mdm.advanced' value='wasadmin'/>
  
    <!-- Details of WebSphere Application Server for Inspector UI installation -->
    <data key='user.was.type.inspector,com.ibm.mdm.advanced' value='ND'/>
    <data key='user.deploy.port.inspector,com.ibm.mdm.advanced' value='8879'/>
    <data key='user.deploy.host.inspector,com.ibm.mdm.advanced' value='localhost'/>
    <data key='user.was.home.inspector,com.ibm.mdm.advanced' value='C:/Program Files (x86)/IBM/WebSphere/AppServer'/>
    <data key='user.was.cell.inspector,com.ibm.mdm.advanced' value='chitiyerCell01'/>
    <data key='user.was.node.inspector,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.server.inspector,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.new.server.ins,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.new.server.check.ins,com.ibm.mdm.advanced' value='false'/>
    <data key='user.was.cluster.inspector,com.ibm.mdm.advanced' value='MDMCluster'/>
    <data key='user.was.cluster.flag.inspector,com.ibm.mdm.advanced' value='true'/>
    <data key='user.was.security.inspector,com.ibm.mdm.advanced' value='1'/>
    <data key='user.was.security.on.off.inspector,com.ibm.mdm.advanced' value='on'/>
    <data key='user.was.user.inspector,com.ibm.mdm.advanced' value='wasadmin'/>
    <data key='user.was.password.inspector,com.ibm.mdm.advanced' value='wasadmin'/>
    <data key='user.use.ssl.inspector,com.ibm.mdm.advanced' value='true'/>

    <!-- Details of WebSphere Application Server for Enterprise Viewer UI installation -->
    <!-- In this sample these details will be ignored as Enterprise Viewer UI is not selected for installation -->
    <!-- To install Enterprise Viewer UI add ev to value for key user.L2.mdm.new.selected.feature.list,com.ibm.mdm.advanced and -->
    <!-- com.ibm.mdm.ev.webapp.feature to the features attribute in offering tag under install -->

    <data key='user.was.type.ev,com.ibm.mdm.advanced' value='ND'/>
    <data key='user.was.home.ev,com.ibm.mdm.advanced' value='C:/Program Files (x86)/IBM/WebSphere/AppServer'/>
    <data key='user.deploy.port.ev,com.ibm.mdm.advanced' value='8879'/>
    <data key='user.deploy.host.ev,com.ibm.mdm.advanced' value='localhost'/>
    <data key='user.was.cell.ev,com.ibm.mdm.advanced' value='chitiyerCell01'/>
    <data key='user.was.node.ev,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.server.ev,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.new.server.ev,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.new.server.check.ev,com.ibm.mdm.advanced' value='false'/>
    <data key='user.was.cluster.ev,com.ibm.mdm.advanced' value='MDMCluster'/>
    <data key='user.was.cluster.flag.ev,com.ibm.mdm.advanced' value='true'/>
    <data key='user.was.security.ev,com.ibm.mdm.advanced' value='1'/>
    <data key='user.was.security.on.off.ev,com.ibm.mdm.advanced' value='on'/>
    <data key='user.was.user.ev,com.ibm.mdm.advanced' value='wasadmin'/>
    <data key='user.was.password.ev,com.ibm.mdm.advanced' value='wasadmin'/>
    <data key='user.use.ssl.ev,com.ibm.mdm.advanced' value='false'/>

    <!-- Details of WebSphere Application Server for Web Reports UI installation -->
    <!-- In this sample these details will be ignored as Web Reports UI is not selected for installation -->
    <!-- To install Web Reports UI add ev to value for key user.L2.mdm.new.selected.feature.list,com.ibm.mdm.advanced and -->
    <!-- com.ibm.mdm.ev.webapp.feature to the features attribute in offering tag under install -->

    <data key='user.was.type.wb,com.ibm.mdm.advanced' value='ND'/>
    <data key='user.was.home.wb,com.ibm.mdm.advanced' value='C:/Program Files (x86)/IBM/WebSphere/AppServer'/>
    <data key='user.deploy.port.wb,com.ibm.mdm.advanced' value='8879'/>
    <data key='user.deploy.host.wb,com.ibm.mdm.advanced' value='localhost'/>
    <data key='user.was.cell.wb,com.ibm.mdm.advanced' value='chitiyerCell01'/>
    <data key='user.was.node.wb,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.server.wb,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.new.server.wr,com.ibm.mdm.advanced' value='none'/>
    <data key='user.was.new.server.check.wr,com.ibm.mdm.advanced' value='false'/>
    <data key='user.was.cluster.wb,com.ibm.mdm.advanced' value='MDMCluster'/>
    <data key='user.was.cluster.flag.wb,com.ibm.mdm.advanced' value='true'/>
    <data key='user.was.security.wb,com.ibm.mdm.advanced' value='1'/>
    <data key='user.was.security.on.off.wb,com.ibm.mdm.advanced' value='on'/>
    <data key='user.was.user.wb,com.ibm.mdm.advanced' value='wasadmin'/>
    <data key='user.was.password.wb,com.ibm.mdm.advanced' value='wasadmin'/>
    <data key='user.use.ssl.wb,com.ibm.mdm.advanced' value='false'/>
  
  </profile>
  <!-- Installation details, since this is a new install, modify flag is set to value false -->
  <install modify='false'>
    <!-- InfoSphere MDM Standard Edition or Advanced Edition  11.5.0.0 -->
    <!-- Offering details including version and list of features to be installed.  The version can be found in diskTag.inf file at the installation repository-->

    <offering profile='InfoSphere MDM Standard Edition or Advanced Edition' id='com.ibm.mdm.advanced' version='11.5.0.FP00IF000_20151014-2303' features='com.ibm.im.mdm.db.feature,com.ibm.im.mdm.app.feature,
    com.ibm.mdm.inspector.webapp.feature' installFixes='none'/>
  </install>
  <!-- Feature Details -->
  <!-- MDM Database com.ibm.im.mdm.db.feature  -->
  <!-- MDM Application com.ibm.im.mdm.app.feature  -->
  <!-- MDM Business Administration UI com.ibm.mdm.ba.webapp.feature -->
  <!-- MDM Inspector UI com.ibm.mdm.inspector.webapp.feature -->
  <!-- MDM Enterprise Viewer UI com.ibm.mdm.ev.webapp.feature -->
  <!-- MDM Web Reports UI com.ibm.mdm.wb.webapp.feature -->

  <preference name='com.ibm.cic.common.core.preferences.eclipseCache' value='${sharedLocation}'/>
  <preference name='com.ibm.cic.common.core.preferences.connectTimeout' value='30'/>
  <preference name='com.ibm.cic.common.core.preferences.readTimeout' value='45'/>
  <preference name='com.ibm.cic.common.core.preferences.downloadAutoRetryCount' value='0'/>
  <preference name='offering.service.repositories.areUsed' value='true'/>
  <preference name='com.ibm.cic.common.core.preferences.ssl.nonsecureMode' value='false'/>
  <preference name='com.ibm.cic.common.core.preferences.http.disablePreemptiveAuthentication' value='false'/>
  <preference name='http.ntlm.auth.kind' value='NTLM'/>
  <preference name='http.ntlm.auth.enableIntegrated.win32' value='true'/>
  <preference name='com.ibm.cic.common.core.preferences.preserveDownloadedArtifacts' value='true'/>
  <preference name='com.ibm.cic.common.core.preferences.keepFetchedFiles' value='false'/>
  <preference name='PassportAdvantageIsEnabled' value='false'/>
  <preference name='com.ibm.cic.common.core.preferences.searchForUpdates' value='false'/>
  <preference name='com.ibm.cic.agent.ui.displayInternalVersion' value='false'/>
  <preference name='com.ibm.cic.common.sharedUI.showErrorLog' value='true'/>
  <preference name='com.ibm.cic.common.sharedUI.showWarningLog' value='true'/>
  <preference name='com.ibm.cic.common.sharedUI.showNoteLog' value='true'/>
</agent-input>