Thursday, 6 February 2020

Integrating TADDM and Control Desk using Integration Composer

In this example we will use the Integration Composer to get CMDB data out from TADDM and populate that data into Control Desk’s CMDB. We are basically setting up data translation between TADDM and Control Desk’s CMDB.

We will have the following steps:
  1. Create data source for TADDM CIType ( Configuration Item )
  2. Create data source for TADDM Actual CI ( Configuration Item )
  3. Create target data source for Control Desk CIType ( Configuration Item )
  4. Create target data source for Control Desk Actual CI ( Configuration Item )
  5. Create mappings between TADDM CIType and Control Desk CIType
  6. Create mapping between TADDM Actual CI and TADDM Actual CI
  7. Run executeMapping.sh on the CIType mapping to populate the Control Desk CIType database
  8. Activate CIs Types on Control Desk
  9. Run executeMapping.sh on the Actual CI mapping to populate the Control Desk Actual CI database
Before we start the procedure we will copy the taddm api files to the ./lib directory in the Integration Composer root directory.
scp platform-model.jar root@huctrldsk001-p1:/app/IBM/Integration_Composer/lib/
Password:
platform-model.jar                                                                                                                                                                                         100%   16MB  16.2MB/s   00:00
scp taddm-api-client.jar root@huctrldsk001-p1:/app/IBM/Integration_Composer/lib/
Password:
taddm-api-client.jar
100%  117MB  39.1MB/s   00:03
Make sure that the JAVA_PATH variable is set correctly in the init.sh file. We used the java version that comes with the Control Desk installation.
# ===============
# SPECIFY THE JDK
# ===============
JAVA_HOME=/app/IBM/SMP/sdk/
Start the Integration Composer using the startFusion.sh command from ./bin directory of your Integration composer installation root.
HUCTRLDSK001-P1:/app/IBM/Integration_Composer/bin # ./startFusion.sh
09 Feb 2015 11:13:01:274 [INFO] IBM Tivoli Integration Composer 7.5.3.0 Build 201411111713 logger started.  (This should only happen once.)
09 Feb 2015 11:13:01:276 [INFO] Java version: JRE 1.6.0 IBM J9 2.4 Linux amd64-64 jvmxa6460sr10-20111207_96808 (JIT enabled, AOT enabled)
J9VM – 20111207_096808
JIT  – r9_20111107_21307ifx1
GC   – 20110519_AA
09 Feb 2015 11:13:01:276 [INFO] Java vendor: IBM Corporation
09 Feb 2015 11:13:01:345 [INFO] Mediator created. (This should only happen once.)
Log in to Integration Composer using your maxdb75 database credentials.
integration-composer-login

Create data source for TADDM CIType ( Configuration Item )

Click Define New Data Source on the Integration Composer Console.
integration-composer-define-new-datasourceSelect TADDM75CIType from the data schemes, then click Next.
integration-composer-define-new-datasource-TADDM75CITypeSpecify the data source name then click Next.
integration-composer-define-new-datasource-TADDM75CITypeDefine your TADDM server connection details. Specify the hostname or ip address, TADDM port, username and password. Please note that TADDM Version 7.2.1 or earlier uses 9530 for host port. TADDM Version 7.2.2 or later uses 9433 port for host port.
integration-composer-define-new-datasource-TADDM75CIType-config-valuesTest the connection then click OK if the connection is successful. Please note that the User Name is case sensitive.
integration-composer-define-new-datasource-TADDM75CIType-connection-successfulClick Finish to save the Data Source.
integration-composer-define-new-datasource-TADDM75CIType-saved

Create data source for TADDM Actual CI ( Configuration Item )

Click Define New Data Source on the Integration Composer Console.
integration-composer-define-new-datasourceSelect TADDM75ActualCI from the data schemes, then click Next.
integration-composer-define-new-datasource-TADDM75ActualCISpecify the data source name then click Next.
integration-composer-define-new-datasource-TADDM75ActualCIDefine your TADDM server connection details. Specify the hostname or ip address, TADDM port, username and password. Please note that TADDM Version 7.2.1 or earlier uses 9530 for host port. TADDM Version 7.2.2 or later uses 9433 port for host port.
integration-composer-define-new-datasource-TADDM75CIType-config-valuesTest the connection then click OK if the connection is successful. Please note that the User Name is case sensitive.
integration-composer-define-new-datasource-TADDM75CIType-connection-successfulClick Finish to save the Data Source.
integration-composer-define-new-datasource-TADDM75CIType-saved

Create target data source for Control Desk CIType ( Configuration Item )

Click Define New Data Source on the Integration Composer Console.
integration-composer-define-new-datasourceSelect CCMDB75CIType from the data schemes, then click Next.
integration-composer-define-new-datasource-CCMDB75CITypeSpecify the data source name then click Next.
integration-composer-define-new-datasource-CCMDB75CIType-namingSpecify your DB2 server connection details.
integration-composer-define-new-datasource-CCMDB75CIType-config-valuesTest the database connection, then click OK once the connection is successful.
integration-composer-define-new-datasource-CCMDB75CIType-test-successfulClick Finish to save the data source.
integration-composer-define-new-datasource-CCMDB75CIType-saved-successful

Create target data source for Control Desk Actual CI ( Configuration Item )

Click Define New Data Source on the Integration Composer Console.
integration-composer-define-new-datasourceSelect CCMDB75ActualCI from the data schemes, then click Next.
integration-composer-define-new-datasource-CCMDB75AcualCISpecify the data source name then click Next.
integration-composer-define-new-datasource-CCMDB75AcualCI-namingSpecify your DB2 server connection details.
integration-composer-define-new-datasource-CCMDB75CIType-config-valuesTest the database connection, then click OK once the connection is successful.
integration-composer-define-new-datasource-CCMDB75CIType-test-successfulClick Finish to save the data source.
integration-composer-define-new-datasource-CCMDB75CIType-saved-successful

Create mappings between TADDM CIType and Control Desk CIType

Click Create New Mapping on the Integration Composer Console.
integration-composer-define-new-datasourceSelect TADDM75CIType as Source then select CCMDB75CIType as Target. Name the mapping to TADDM-2-TUSC-CI-Types then click OK.
integration-composer-create-new-mapping-TADDM-2-TUSC-CI-Types
Click specify the Password then click Finish at the TADDM75CIType data source selection.
integration-composer-create-new-mapping-TADDM-2-TUSC-CI-Types-taddm-selectionClick specify the Password then click Finish at the CCMDB75CIType data source selection.
integration-composer-create-new-mapping-TADDM-2-TUSC-CI-Types-cmdb-selectionSelect Import from the upper Select Action menu.
integration-composer-create-new-mapping-TADDM-2-TUSC-CI-Types-importSelect TADDMToCIType75.fsn from the list then click Open.
integration-composer-create-new-mapping-TADDM-2-TUSC-CI-Types-TADDMToCIType75
Select Save from the upper Select Action menu.
integration-composer-create-new-mapping-TADDM-2-TUSC-CI-Types-saveSelect Close from the upper Select Action menu then click Yes to close the mapping window.
integration-composer-create-new-mapping-TADDM-2-TUSC-CI-Types-close

Create mapping between TADDM Actual CI and TADDM Actual CI

Click Create New Mapping on the Integration Composer Console.
integration-composer-define-new-datasourceSelect TADDM75ActualCI as Source then select CCMDB75ActualCI as Target. Name the mapping to TADDM-2-TUSC-Actual-CIs then click OK.
integration-composer-create-new-mapping-TADDM-2-TUSC-Actual-CIs
Click specify the Password then click Finish at the TADDM75ActualCI data source selection.
integration-composer-create-new-mapping-TADDM-2-TUSC-Actual-CIs-source1Click specify the Password then click Finish at the CCMDB75ActualCI data source selection.
integration-composer-create-new-mapping-TADDM-2-TUSC-Actual-CIs-source2Select Import from the upper Select Action menu.
integration-composer-create-new-mapping-TADDM-2-TUSC-Actual-CIs-importSelect TADDMtoActualCI75.fsn then click Open.
integration-composer-create-new-mapping-TADDM-2-TUSC-Actual-CIs-fsn
Select Save from the upper Select Action menu.
integration-composer-create-new-mapping-TADDM-2-TUSC-Actual-CIs-saveSelect Close from the upper Select Action menu then click Yes to close the mapping window.
integration-composer-create-new-mapping-TADDM-2-TUSC-Actual-CIs-close

Run executeMapping.sh on the CIType mapping to populate the Control Desk CIType database

executeMapping.sh is located in ./bin directory of your Integration Composer root directory. Run the command with the following syntax:
./executeMapping.sh TADDM-2-TUSC-CI-Types maximo yourpassword administrator yourpassword   maximo yourpassword
If the procedure completes successfully you should be seeing this:
09 Feb 2015 13:25:41:640 [INFO]
========================================================
Mapping execution completed
Mapping: TADDM-2-TUSC-CI-Types
Execution time: 00:46:28
Classifications created: 88
Records created: 109947
Records updated: 41808
Records deleted: 1583
Errors: 0
NRS GUIDs created: 0
NRS errors: 0
NRS records updated on Alternate Keys: 0
NRS records found as duplicate: 0
NRS records deleted because of duplicate: 0
NRS warnings due to duplicate data: 0
========================================================
Done
Mapping completed successfully.
Integration Composer has finished.

Activate CIs Types on Control Desk

Log in to your Control Desk console and navigate to Administrator->CI Types
sccd-ci-types
It is important to point out here that you should only activate a very small number of CI Types at first then try to expand the list later on. We only enabled the Linux system specific Configuration Item Types such as:
  • SYS.LINUX.LINUXUNITARYCOMPUTERSYSTEM
  • SYS.UNITARYCOMPUTERSYSTEM
  • SYS.COMPUTERSYSTEM
  • SYS.LINUX.LINUX
sccd-ci-activationYou can Activate a CI by selecting it then clicking on the Change Status option in the left menu.
sccd-ci-activate

Run executeMapping.sh on the Actual CI mapping to populate the Control Desk Actual CI database

Prior to import the Actual Configuration items su over to ctginst1 and run the following command against your db2 database:
/app/ibm/db2/V9.7/bin/db2jdbcbind  -url jdbc:db2://huctrldsk001-p1.ipm.local:50005/maxdb75 -user maximo -password yourpassword -size 15
Binder performing action “add” to “jdbc:db2://huctrldsk001-p1.ipm.local:50005/maxdb75” under collection “NULLID”:
Package “SYSSTAT”: Already exists (No need to bind).
Package “SYSSH100”: Already exists (No need to bind).
Package “SYSSH200”: Already exists (No need to bind).
Package “SYSSH300”: Already exists (No need to bind).
Package “SYSSH400”: Already exists (No need to bind).
Package “SYSSN100”: Already exists (No need to bind).
Package “SYSSN200”: Already exists (No need to bind).
Package “SYSSN300”: Already exists (No need to bind).
Package “SYSSN400”: Already exists (No need to bind).
Package “SYSSH101”: Already exists (No need to bind).
Package “SYSSH201”: Already exists (No need to bind).
Package “SYSSH301”: Already exists (No need to bind).
Package “SYSSH401”: Already exists (No need to bind).
Package “SYSSN101”: Already exists (No need to bind).
Package “SYSSN201”: Already exists (No need to bind).
Package “SYSSN301”: Already exists (No need to bind).
Package “SYSSN401”: Already exists (No need to bind).
Package “SYSSH102”: Already exists (No need to bind).
Package “SYSSH202”: Already exists (No need to bind).
Package “SYSSH302”: Already exists (No need to bind).
Package “SYSSH402”: Already exists (No need to bind).
Package “SYSSN102”: Already exists (No need to bind).
Package “SYSSN202”: Already exists (No need to bind).
Package “SYSSN302”: Already exists (No need to bind).
Package “SYSSN402”: Already exists (No need to bind).
Package “SYSLH100”: Already exists (No need to bind).
Package “SYSLH200”: Already exists (No need to bind).
Package “SYSLH300”: Already exists (No need to bind).
Package “SYSLH400”: Already exists (No need to bind).
Package “SYSLN100”: Already exists (No need to bind).
Package “SYSLN200”: Already exists (No need to bind).
Package “SYSLN300”: Already exists (No need to bind).
Package “SYSLN400”: Already exists (No need to bind).
Package “SYSLH101”: Already exists (No need to bind).
Package “SYSLH201”: Already exists (No need to bind).
Package “SYSLH301”: Already exists (No need to bind).
Package “SYSLH401”: Already exists (No need to bind).
Package “SYSLN101”: Already exists (No need to bind).
Package “SYSLN201”: Already exists (No need to bind).
Package “SYSLN301”: Already exists (No need to bind).
Package “SYSLN401”: Already exists (No need to bind).
Package “SYSLH102”: Already exists (No need to bind).
Package “SYSLH202”: Already exists (No need to bind).
Package “SYSLH302”: Already exists (No need to bind).
Package “SYSLH402”: Already exists (No need to bind).
Package “SYSLN102”: Already exists (No need to bind).
Package “SYSLN202”: Already exists (No need to bind).
Package “SYSLN302”: Already exists (No need to bind).
Package “SYSLN402”: Already exists (No need to bind).
Package “SYSLH103”: Bind succeeded.
Package “SYSLH203”: Bind succeeded.
Package “SYSLH303”: Bind succeeded.
Package “SYSLH403”: Bind succeeded.
Package “SYSLN103”: Bind succeeded.
Package “SYSLN203”: Bind succeeded.
Package “SYSLN303”: Bind succeeded.
Package “SYSLN403”: Bind succeeded.
Package “SYSLH104”: Bind succeeded.
Package “SYSLH204”: Bind succeeded.
Package “SYSLH304”: Bind succeeded.
Package “SYSLH404”: Bind succeeded.
Package “SYSLN104”: Bind succeeded.
Package “SYSLN204”: Bind succeeded.
Package “SYSLN304”: Bind succeeded.
Package “SYSLN404”: Bind succeeded.
Package “SYSLH105”: Bind succeeded.
Package “SYSLH205”: Bind succeeded.
Package “SYSLH305”: Bind succeeded.
Package “SYSLH405”: Bind succeeded.
Package “SYSLN105”: Bind succeeded.
Package “SYSLN205”: Bind succeeded.
Package “SYSLN305”: Bind succeeded.
Package “SYSLN405”: Bind succeeded.
Package “SYSLH106”: Bind succeeded.
Package “SYSLH206”: Bind succeeded.
Package “SYSLH306”: Bind succeeded.
Package “SYSLH406”: Bind succeeded.
Package “SYSLN106”: Bind succeeded.
Package “SYSLN206”: Bind succeeded.
Package “SYSLN306”: Bind succeeded.
Package “SYSLN406”: Bind succeeded.
Package “SYSLH107”: Bind succeeded.
Package “SYSLH207”: Bind succeeded.
Package “SYSLH307”: Bind succeeded.
Package “SYSLH407”: Bind succeeded.
Package “SYSLN107”: Bind succeeded.
Package “SYSLN207”: Bind succeeded.
Package “SYSLN307”: Bind succeeded.
Package “SYSLN407”: Bind succeeded.
Package “SYSLH108”: Bind succeeded.
Package “SYSLH208”: Bind succeeded.
Package “SYSLH308”: Bind succeeded.
Package “SYSLH408”: Bind succeeded.
Package “SYSLN108”: Bind succeeded.
Package “SYSLN208”: Bind succeeded.
Package “SYSLN308”: Bind succeeded.
Package “SYSLN408”: Bind succeeded.
Package “SYSLH109”: Bind succeeded.
Package “SYSLH209”: Bind succeeded.
Package “SYSLH309”: Bind succeeded.
Package “SYSLH409”: Bind succeeded.
Package “SYSLN109”: Bind succeeded.
Package “SYSLN209”: Bind succeeded.
Package “SYSLN309”: Bind succeeded.
Package “SYSLN409”: Bind succeeded.
Package “SYSLH10A”: Bind succeeded.
Package “SYSLH20A”: Bind succeeded.
Package “SYSLH30A”: Bind succeeded.
Package “SYSLH40A”: Bind succeeded.
Package “SYSLN10A”: Bind succeeded.
Package “SYSLN20A”: Bind succeeded.
Package “SYSLN30A”: Bind succeeded.
Package “SYSLN40A”: Bind succeeded.
Package “SYSLH10B”: Bind succeeded.
Package “SYSLH20B”: Bind succeeded.
Package “SYSLH30B”: Bind succeeded.
Package “SYSLH40B”: Bind succeeded.
Package “SYSLN10B”: Bind succeeded.
Package “SYSLN20B”: Bind succeeded.
Package “SYSLN30B”: Bind succeeded.
Package “SYSLN40B”: Bind succeeded.
Package “SYSLH10C”: Bind succeeded.
Package “SYSLH20C”: Bind succeeded.
Package “SYSLH30C”: Bind succeeded.
Package “SYSLH40C”: Bind succeeded.
Package “SYSLN10C”: Bind succeeded.
Package “SYSLN20C”: Bind succeeded.
Package “SYSLN30C”: Bind succeeded.
Package “SYSLN40C”: Bind succeeded.
Package “SYSLH10D”: Bind succeeded.
Package “SYSLH20D”: Bind succeeded.
Package “SYSLH30D”: Bind succeeded.
Package “SYSLH40D”: Bind succeeded.
Package “SYSLN10D”: Bind succeeded.
Package “SYSLN20D”: Bind succeeded.
Package “SYSLN30D”: Bind succeeded.
Package “SYSLN40D”: Bind succeeded.
Package “SYSLH10E”: Bind succeeded.
Package “SYSLH20E”: Bind succeeded.
Package “SYSLH30E”: Bind succeeded.
Package “SYSLH40E”: Bind succeeded.
Package “SYSLN10E”: Bind succeeded.
Package “SYSLN20E”: Bind succeeded.
Package “SYSLN30E”: Bind succeeded.
Package “SYSLN40E”: Bind succeeded.
DB2Binder finished.
Once that is done run the executeMapping.sh against the Actual CI mapping like this:
HUCTRLDSK001-P1:/app/IBM/Integration_Composer/bin # ./executeMapping.sh TADDM-2-TUSC-Actual-CIs maximo yourpassword administrator yourpassword maximo yourpassword
Integration Composer will now start.
IBM Tivoli Integration Composer 7.5.3.0 Build 201411111713
09 Feb 2015 13:35:55:371 [INFO] IBM Tivoli Integration Composer 7.5.3.0 Build 201411111713
Mapping: TADDM-2-TUSC-Actual-CIs
Creating data source Fusion…  done
IBM Tivoli Integration Composer database version: V7507-40
Retrieving mapping definition TADDM-2-TUSC-Actual-CIs…        done
Creating source data source TADDM75ActualCI…  done
Connecting to source data source TADDM75ActualCI…
09 Feb 2015 13:35:56:371 [INFO] ResourceManager : Loading resource file /app/IBM/Integration_Composer/data/properties/jdbcinfo.properties : 39 resource(s) loaded.
09 Feb 2015 13:35:56:992 [INFO] Collation version: 2.2, build: null, home: /app/IBM/Integration_Composer
09 Feb 2015 13:35:57:001 [INFO] TADDMActualCI._loadResources: TADDM global depth value set at 3
09 Feb 2015 13:35:57:001 [INFO] TADDMActualCI._loadResources: TADDM deleted GUIDs will not be logged; Actual CI deletion is disabled.
09 Feb 2015 13:35:57:002 [INFO] TADDMActualCI._loadResources: Authorized space filtering enabled.
09 Feb 2015 13:35:57:125 [INFO] AppServer Exclusions Filtering will be turned off. TADDM version is 7.3 or greater.
09 Feb 2015 13:35:57:125 [INFO] TADDMActualCI._loadResources: Relationships marked for deletion will only be deleted if ITIC processed both the target and source during this run.
09 Feb 2015 13:35:57:126 [INFO] …TADDMActualCI._loadResources: 10 threads will be used to gather TADDM data.
… … A maximum of 50 objects will be queued at one time.
Connecting to source data source TADDM75ActualCI…     done
Creating target data source CCMDB75ActualCI…  done
Connecting to target data source CCMDB75ActualCI…
Connecting to target data source CCMDB75ActualCI…     done
Retrieving mapping expressions…       done
Retrieving mapping deciding classes…  done
retrieving mapping expressions 44
finished mapping expressions 1
finished mapping expressions 2
finished mapping expressions 3
finished mapping expressions 4
finished mapping expressions 5
finished mapping expressions 6
finished mapping expressions 7
finished mapping expressions 8
finished mapping expressions 9
finished mapping expressions 10
finished mapping expressions 11
finished mapping expressions 12
finished mapping expressions 13
finished mapping expressions 14
finished mapping expressions 15
finished mapping expressions 16
finished mapping expressions 17
finished mapping expressions 18
finished mapping expressions 19
finished mapping expressions 20
finished mapping expressions 21
finished mapping expressions 22
finished mapping expressions 23
finished mapping expressions 24
finished mapping expressions 25
finished mapping expressions 26
finished mapping expressions 27
finished mapping expressions 28
finished mapping expressions 29
finished mapping expressions 30
finished mapping expressions 31
finished mapping expressions 32
finished mapping expressions 33
finished mapping expressions 34
finished mapping expressions 35
finished mapping expressions 36
finished mapping expressions 37
finished mapping expressions 38
finished mapping expressions 39
finished mapping expressions 40
finished mapping expressions 41
finished mapping expressions 42
finished mapping expressions 43
finished mapping expressions 44
done mapping expressions
translating mappings 6
finished mappings 1
finished mappings 2
finished mappings 3
finished mappings 4
finished mappings 5
finished mappings 6
done mappings
retrieving deciding classes 6
finished deciding classes 1
finished deciding classes 2
finished deciding classes 3
finished deciding classes 4
finished deciding classes 5
finished deciding classes 6
done deciding classes
generating source code 1
finished source code 1
done source code
generating target code 6
finished target code 1
finished target code 2
finished target code 3
finished target code 4
finished target code 5
finished target code 6
done target code
retrieving file names to compile 6
finished file name 1
finished file name 2
finished file name 3
finished file name 4
finished file name 5
finished file name 6
done file names
Compiling 11 files 11
finished compiling 1
finished compiling 2
finished compiling 3
finished compiling 4
finished compiling 5
finished compiling 6
finished compiling 7
finished compiling 8
finished compiling 9
finished compiling 10
finished compiling 11
done
REMOVELISTENER
09 Feb 2015 13:35:57:806 [INFO]
========================================================
Start mapping execution
Mapping: TADDM-2-TUSC-Actual-CIs
========================================================
09 Feb 2015 13:36:06:589 [INFO] TADDMActualCI.getClassificationDepthSetting():Classification SYS.LINUX.LINUX will be processed at depth level 1 because it is an active non-top-level classification
09 Feb 2015 13:36:07:059 [WARN]
09 Feb 2015 13:36:07:060 [WARN] The following top level classifications are in a promotion scope, but not activated.  CIs with these classifications will only be imported from TADDM if they are related to other active, top-level CIs.
09 Feb 2015 13:36:07:060 [WARN]   SYS.BUSINESSSYSTEM
09 Feb 2015 13:36:07:060 [WARN]   APP.APPLICATION
09 Feb 2015 13:36:07:060 [WARN]   APP.SOFTWAREIMAGE
09 Feb 2015 13:36:07:060 [INFO]
09 Feb 2015 13:36:07:061 [INFO] Querying TADDM for CIs of the classifications that are active…
09 Feb 2015 13:36:07:061 [INFO]
09 Feb 2015 13:36:07:061 [INFO] All TADDM Guids for the active Classifications will be imported.
09 Feb 2015 13:36:07:140 [INFO] Retrieved 0 Authorized CIs for filtering.
09 Feb 2015 13:36:07:187 [INFO] TADDM contains 4 guids for the SYS.LINUX.LINUX classification.
09 Feb 2015 13:36:07:188 [INFO] The number of new and updated SYS.LINUX.LINUX GUIDs to process is 4.  These will be processed at depth level 1.
09 Feb 2015 13:36:07:234 [INFO] TADDM contains 4 guids for the SYS.COMPUTERSYSTEM classification.
09 Feb 2015 13:36:07:234 [INFO] The number of new and updated SYS.COMPUTERSYSTEM GUIDs to process is 4.  These will be processed at depth level 3.
09 Feb 2015 13:36:07:234 [INFO]   The following classifications will be processed as subclasses of SYS.COMPUTERSYSTEM at depth level 3.
09 Feb 2015 13:36:07:235 [INFO]     SYS.LINUX.LINUXUNITARYCOMPUTERSYSTEM
09 Feb 2015 13:36:07:235 [INFO]     SYS.UNITARYCOMPUTERSYSTEM
09 Feb 2015 13:36:07:235 [INFO]
09 Feb 2015 13:36:07:236 [INFO] The total number of active Guids to process is: 8
Actual CI: 3EA8E707D644308A8A3CFB967DB7F726
09 Feb 2015 13:36:11:389 [INFO] NRS initialized.
09 Feb 2015 13:36:11:409 [INFO] MaxSequenceProvider created. (This should only happen once.)
Actual CI: 021E523A62B73A9E9A9017CFCE0DECEA
Actual CI: 9EBC5B2280883ECFA71F03DDB8CA4366
Actual CI: 151EAA4AD64A3E73938800BE3164BEE6
Actual CI: 5867ECDB40603FEDA8ADFAAA9C257300
Actual CI: 021E523A62B73A9E9A9017CFCE0DECEA
Actual CI: E92F23A3DD3836E59EDEFC5438B76168
Actual CI: FBFD45DA10C93EDB8D74D00551F511C1
Actual CI: F437063E046032F59F60A050018F01EC
Actual CI: C084A1E967653AF4940E2A7152C02149
Actual CI: 550246C3B0F83308960EF8330500B680
Actual CI: 28E856A815043FA6887ABB2C5A0E73B7
Actual CI: 803AB968A0783313AC883835A0EDDDA2
Actual CI: 4CA413D13A5E3383A3724EA072F803D8
Actual CI: E4B9E460B82E3DACB7D2912F6A9CCE87
Actual CI: 0B2FBE6FCA4B35B8B93BC244883BEDC4
Actual CI: C824EFE2CA163D5EA95EF79BAB769732
Actual CI: 3EA8E707D644308A8A3CFB967DB7F726
Actual CI: 26BBEF79820B300D9366E5FA7B95D807
Actual CI: 530DB97F996832C291088B4A66055CBB
Actual CI: 72D9B0CD2E733F63A4C75C76104251EF
Actual CI: DEDE63ECA1AE37A1A1A5AE1E28E63857
Actual CI: 56BADF3D751D302694E18DD6AF7990F9
Actual CI: E8BE04B2F9953B798B935F64672BDAB9
Actual CI: 1838453074AA304B8C9EB270B3209CDB
Actual CI: EDA8200495A731AFB48A55228ED51570
Actual CI: 29432FD455E03F43920AED7D29798258
Actual CI: 055E03B89E34320882ABD781A69F9809
Actual CI: 5D9F1A0574333C6EBE33DECA4E09BEC3
Actual CI: 151EAA4AD64A3E73938800BE3164BEE6
Actual CI: 9BEF9EC3D9C3333AB8E3D2BE42433035
Actual CI: DD025C72A0B5391BBC14E0F5458D5093
Actual CI: 78AD41482B143ABA8D6397BC899D1ECD
Actual CI: 28DD04BB28D73BDD8013954A03C1D4F3
Actual CI: 933D9FC7AD373FEFA2A2609AFD2E033C
Actual CI: B310D4FB341B3ECB8B8E3DE61B9769BB
Actual CI: 892B43543AB635249544B74FB2D50238
Actual CI: 9F6B77BB3AF132729EBDB479E926B2A0
Actual CI: BFCE3FB197A435E9B9C39320A6BCB734
Actual CI: 6D738D4A858E3F739EE5019BF6DAE542
09 Feb 2015 13:36:13:913 [INFO] Processed Status —  TopLevel CIs: 8/8  All CIs this Interval: 52  Total CIs: 52
Actual CI: 3605D85E1356342789A8C75555D1753C
Actual CI: 9EBC5B2280883ECFA71F03DDB8CA4366
Actual CI: E89365947C4A3B028E09856A0ECBD001
Actual CI: 29811E1696A23E6DBEFFCACCD48F9CFF
Actual CI: 8332EE5EB64031688E2A8FF94CF8F8FD
Actual CI: 550F4F2A50F6386D9F5C62D8D8078F8B
Actual CI: 992CB812486E3F6994890C610520DB2A
Actual CI: CDC438AE661B3E558BF1C9E3F674D7D5
Actual CI: 7CB0F3129F7538888C6112812FC63919
Actual CI: DF646C6330F4326AA08E66F311BD8748
Actual CI: 97658F61EAB23405BAA76164A00C7342
Actual CI: 352BBACA06E63002AA30DC0D24F106E2
09 Feb 2015 13:36:14:113 [INFO]
========================================================
Mapping execution completed
Mapping: TADDM-2-TUSC-Actual-CIs
Execution time: 00:00:16
Actual CIs created: 8
Records created: 404
Records updated: 0
Records deleted: 0
Errors: 0
NRS GUIDs created: 12
NRS errors: 0
NRS records updated on Alternate Keys: 0
NRS records found as duplicate: 0
NRS records deleted because of duplicate: 0
NRS warnings due to duplicate data: 0
========================================================
Done
Mapping completed successfully.
Integration Composer has finished.
As you can see 8 Actual Configuration items were created using data coming from TADDM. Log in to your Control Desk Console and navigate to:  IT Infrastructure -> Actual Configuration Items
sccd-actual-ci
The Actual Configuration items window now loads, however it is empty. Click on the blue double arrow icon on the top of the screen to reload data from the database.
sccd-actual-ci-emptyIf everything went fine you should be seeing TADDM records showing up here.
sccd-actual-ci-loaded

Deploying Maximo Work Centers (LDAP and non-LDAP)

Deploying Maximo Work Centers (LDAP and non-LDAP)

Body

With the release of 7.6.0.8 and allowing work centers to now work with LDAP and security enabled environments, I wanted to make a document that would allow those who are new to the concept of work centers have a good idea of the process, what could go wrong, and step-by-step how to configure the maximo work centers in your current environment. I won't go into what work centers are available, for information on role-based interfaces I would recommend you check out the other documents for the features, looks and functionality of them. Link here:
https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20Maximo%20Asset%20Management/page/Work%20Centers

There are options when deploying work centers. I will try to go over all of them and give recommendations on the best way to approach deploying for what fits your needs. Since there are extra steps for LDAP, I will label those steps as we go through, and when deploying for non-LDAP, you will want to skip those steps.
Work centers are deployed using the maximo-x war that is part of base Maximo, so if you see reference to maximo-x, that is what it means.

Please note that Internet Explorer is not supported with work centers. Please use Edge, Chrome or Firefox when connecting. You can refer to the compatibility matrix for details.
Work Centers are only available in Maximo 7.6.0.5 and later.
Work Centers with LDAP are only available in Maximo 7.6.0.8 and later.

Overview:
Types of deployments
  -Maximo-x login form
  -Maximo login form
  -Maximo CORS login (When the maximo-x war is deployed in a separate server/cluster as the maximo UI)
Changes to make before deploying
  -web.xml changes
  -config.json changes
Deploying the Maximo-x war
  -Building the maximo-x war
  -To the same cluster as UI
  -To a separate cluster from UI
Properties to change in Maximo
Group considerations and Object Structures (Work center permissions)
Logging into Work Centers


Types of Deployments
There are a few types of deployments, and depending on how you want your users to connect and how you want the infrastructure to flow, there are 3 main options.
(Option 1) The first is using the maximo-x login form.
This means that for a user to connect to Maximo work centers, they must access the URL of http://<servername>:<port>/maximo-x (by default). This uses the maximo-x login form and will authenticate users with access to Maximo and work centers. This is the default option. Note that with LDAP the URL used to login should be /maximo-x/index.html.
(Option 2) The second is to use the Maximo login form. This means that when users access the /maximo-x context root (same URL as above), they will be redirected to the Maximo page to login. This will authenticate users with access to Maximo and if they have permissions to a work center, it will redirect them to work centers.
(Option 3) The third is to use CORS. CORS is when you deploy your Maximo-x war to a separate server or cluster than your base Maximo UI server, and since the maximo-x authentication always goes through base Maximo, this is how it knows where to connect to.

Changes to Make Before Building and Deploying
The web.xml is located by default here:    SMP\maximo\applications\maximo-x\WEB-INF
The config.json is located by default here:  SMP\maximo\applications\maximo-x\script
For NON-LDAP deployments you will not need to make any changes to the maximo-x web.xml.
For LDAP deployments, the web.xml will need to be changed in order to enable security. This is similar to the base Maximo web.xml's and involves uncommenting out the security constraint and changing the login-config and changing application security to 1.

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee&#34; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&#34; xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"&gt;
    <display-name>Maximo-X</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>MAXIMO-X</web-resource-name>
            <description>MAXIMO-X</description>
            <url-pattern>/index.html</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint>
            <description>Roles that have access to MAXIMO-X</description>
            <role-name>maximouser</role-name>
        </auth-constraint>
        <user-data-constraint>
            <description>data transmission gaurantee</description>
            <transport-guarantee>NONE</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
<!--  Uncomment this login-config if you want to use BASIC authentication and make
    sure the FORM based login-config below is commented out.  NOTE: You still need the
    security-constraint about uncommented too.
-->
<!--
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>MAXIMO Web Application Realm</realm-name>
    </login-config>
-->
<!--  Uncomment this login-config if you want to use form authentication and make
    sure the BASIC based login-config above is commented out.  NOTE: You still need the
    security-constraint above uncommented too.
-->
    <login-config>
         <auth-method>FORM</auth-method>
         <realm-name> MAXIMO Web Application Realm</realm-name>
         <form-login-config>
                  <form-login-page>/formlogin.html</form-login-page>
                 <form-error-page>/formloginerror.html</form-error-page>
          </form-login-config>
     </login-config>
    <security-role>
        <description>MAXIMO Application Users</description>
        <role-name>maximouser</role-name>
    </security-role>
      <env-entry>
            <description>Indicates whether to use Application Server security or not</description>
            <env-entry-name>useAppServerSecurity</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>1</env-entry-value>
     </env-entry>
</web-app>

If you refer to the previous section, you will find the different deployment options. Changes to the config.json are based on the options above.
(Option 1) No changes to config.json needed. If your MAXIMO CONTEXT ROOT HAS CHANGED you will need to modify this file.
(Option 2) You will need to modify the top section of the config.json, changing the enabled value to true, and updating the hostname and port of Maximo.
(Option 3) You will need to modify both sections of the config.json.

If your MAXIMO CONTEXT ROOT HAS CHANGED you will need to modify this file, whether using non-ldap or ldap. For example if you access Maximo as /maxprod in the URL, you will need to change the first part of the config.json to reflect this change. Change the line "defaultcontext": "/maximo", below to "defaultcontext": "/maxprod",

Below is an example of each section filled out. If you do not need a section for your deployment type as mentioned above, then you don't need to make any changes.
{
  
    "defaultcontext": "/maximo",
    "comment_defaultcontext": "The default context, based on default setup, where maximo and maximo-x are deployed on the same server using same hostname and port.",
    "maximoserverauthentication" : {
        "enabled": true,
        "maximologinurl": "http://uiserverhostname.ibm.com:80/maximo&#34;
    },
    "comment_maximoserverauthentication": "Enable this if you want to use maximo server configured authentication only. In this mode, the user would be re-directed to maximologinurl to authenticate. By default, this is not enabled and the maximo-x login dialog would be shown, which would gather credentials and submit to maximo server.",
  
      "contexts": [
  
        {
            "name": "Separate Maximo Host",
            "hostname": "workcenterhostname.ibm.com",
            "maximohostname": "uiserverhostname.ibm.com",
            "maximoport": 80,
            "maximocontext": "/maximo"
        }
    ],
    "comment_contexts": "Use contexts, if you want to use a different hostname to access maximo-x or if maximo-x and maximo are running on two different servers. If you are not using proxy, make sure to configure Maximo server with CORS settings. NOTE that you do not need to use contexts if maximo-x and maximo are running on the same server and using the same hostname and port."
  
}


Deploying the Maximo-x war
After configuring the above files as needed for your deployment, build the maximo-x war.
To do this navigate to SMP\maximo\deployment in command prompt and run the command:
buildmaximo-xwar
This will build the maximo-x.war is the same place as the maximo ear, in SMP\maximo\deployment\default.

Deploying the maximo-x war to either WebSphere or WebLogic is the same process as deploying the regular maximo.ear, but with less steps.
You will need to select the server/cluster to deploy the war to, as well as map the virtual host that is appropriate to that server/cluster.
The rest can be left as default (unless you'd like to change the application name or context root).
When deploying to a cluster separate from the UI cluster, there are no extra steps involved in the deployment process.

For LDAP, after deploying it is still recommended to map the security role to user/group mapping to All Authenticated In Application's Realm.
Do this by going to the WebSphere console, Applications, select the maximo-x application, the Security role to user/group mapping.

Properties to change in Maximo
Before logging in to maximo-x, there are a few properties in Maximo's System Properties application that should be updated.
In the System Properties application, filter for webappurl.
These properties represent the URL that is passed to the request when making an oslc rest call. This is needed because the URLs returned from the calls are used to make additional calls.
Update this to the URL that would be used to connect to either your UI or OSLC cluster.

 
Update mxe.oslc.webappurl to include the correct hostname and port.
Example: http://maximouiserverhostname.ibm.com:80/maximo/oslc/
Update mxe.oslc.restwebappurl to include the correct hostname and port.

After changing the properties, save and then select the changed properties, and perform a live refresh.

Group considerations and Object Structures (Work center permissions)
Since work centers behave similar to an application in Maximo, the security permissions are controlled from Group security.
By default the groups need to be created. You want groups associated with each role/work center. There are examples in the Maximo demo data. These groups give access to the work center, as well as the appropriate needed object structures. Work centers work by using the JSON API in Maximo and collecting data from object structures through it. Make sure that users logging in to work centers have permissions associated with these groups.
Users can have access to multiple work centers, and from 7.6.0.7 and later, the user is able to select their default work center to log them in to.
It is possible to give the Maxadmin group access to all work centers for ability to login and test.

 
The knowledge center has how to configure these security groups and Object Structures:
https://www.ibm.com/support/knowledgecenter/en/SS8CCV_7.6.0.5/com.ibm.mbs.doc/securgroup/t_add_users_workcntr.html

Logging into Work Centers
Now that users have permissions, work centers are deployed and configured, we can log in.
It is highly recommended to clear your browser cache before logging in, especially if you have attempted to log in previously and were unable to.
Access the URL http://maximouiserverhost/maximo-x and it will direct you to the login page.
In 7.6.0.5, the user logging in must have the same loginid and userid in order to be able to log in. This is fixed in Maximo 7.6.0.6.

If you receive a white page when logging in, ensure that you are NOT using Internet Explorer, clear your browser cache, and ensure that the security groups are correctly configured for the user, then try again.
If after logging in, some KPIs or sections don't load, then the problem will likely be either access to an Object Structure is missing, or the data retrieved is missing a piece of information needed.



Thank you for taking to the time to go over this blog, and if any questions, comments or concerns please let me know!

How to synchronize only active users using VMMSYNC

How do I only sync the users that are listed as active in Active Directory to Maximo using VMMSYNC?

Cause

When disabled users are not needed to be in Maximo as person and users, you can filter out the disabled users via the VMMSYNC in order to help alleviate extra information that is not needed as well as increase performance times for syncs running.

Answer

Users in Active Directory by default are determined the the userAccountControl parameter in AD on each particular user. For example, a basic Enabled Account has a userAccountControl value of 512, and disabled is 514. These numbers change based on the type of account, authentication, password requirements and other factors. If you wish to know what values to use for the userAccountControl you can use an LDAP browser to do a look up on your users, or consult Microsoft's documentation on what values correspond to what time of user.

In order to use the userAccountControl property with VMM, it needs to be added to the WebSphere repository as a supported entity type. Here are the steps to follow:

1. In the WebSphere server console, stop the MXServer
2. Stop Node(s) that your Maximo is running on.
3. In command prompt, navigate to Websphere\appserver\bin\
4. Run the command wsadmin.sh or wsadmin.bat (depending on your OS)
5. In the admin prompt, run this command (Note it is case sensitive):
$AdminTask addIdMgrPropertyToEntityTypes {-name useraccountcontrol -dataType string -entityTypeNames PersonAccount}
6. Restart cell Manager, either through the command line or the service.
7. Sync the WebSphere node manually to the dmgr node. Do this with the syncnode command in the appsrv01 profile bin folder.
8. Start the node.
9. Start MXServer and Maximo.

Once the property has been added to the WebSphere repository, we can now set the filter in the VMMSYNC to use this property. In your usermapping XML on the VMMSYNC cron task, you will want to change your filter to look like this:

<filter>PersonAccount' and useraccountcontrol='512' and useraccountcontrol='66048</filter>

Note: This will sync all users that have a useraccountcontrol value of 512, which is a basic enabled account, and 66048 which is an enabled account with no password expiration. If you wish to add multiple types of enabled accounts, simply follow the the provided syntax and add more of the corresponding values.

Wednesday, 5 February 2020

Clustering with Maximo and WebSphere 8.5.5 - Part 3 - Isolating Functionality and Deployment

Clustering with Maximo and WebSphere 8.5.5 - Part 3 - Isolating Functionality and Deployment

Body

It's been a bit since my last entry in this series, so I thought I'd take some time this morning to finish off this tutorial on configuring a basic horizontal cluster.  If you haven't read my previous posts, you can jump over to Part 1: WebSphere Configuration and Part 2: JMS Configuration.
In this final portion of the three part series, we will go over the following topics.
  • Creating the Virtual Host
  • Assigning Names to JVM's
  • Building and Deploying ear files
  • Isolating functionality
I will note again, this is a basic clustering scenario, it may not fit the exact needs of everyone, but can be used as a guide in your configuration. You may want to add more UI servers, a BROS or CRON JVM, or even some more advanced queue configuration.
So lets begin, the first step in this part of the guide is probably a step that could of been a section on Part 1 of the series, so I'm going to start with it first, this is creating the virtual host. The virtual host will define the addresses and ports of your cluster members and will map the web server to those JVM's web container ports.

Configuring the Virtual Host
1. Log in to your WebSphere console, expand 'Environment' and click on 'Virtual Hosts'
2. Click 'New' and enter maxcluster_host in the 'Name' field and click 'Apply'

image

3. From the maxcluster_host screen, click on ' Host Aliases'. We will now want to add our host names and ports for our UI JVM's as well as the web server. We will not be adding the MIF JVM to this virtual host as we don't want the web server to load balance users into that JVM. Click on 'New' and add your web servers and JVM's as well as their web container ports as seen below.

image

The first entry is our web server, which is on port 80. The second two entries are for our two UI JVM's, one on each node on port 9080. You will want to add all your UI servers to this virtual host.
4. Once your maxcluster_host is setup we will want to create another virtual host for your MIF server, this host will just contain the MIF JVM's web container port.  Follow steps 1-3 above to create another virtual host called maxmif_host as seen below.

image

Now that our virtual hosts are created, we will assign JVM names to each server. This will help with isolating cron task functionality by ensuring all JVM's are starting up with a static mxe.name bound to them.

Assigning Names to JVM's
In WebSphere you can set the mxe.name property directly on the JVM. This is done in the Generic JVM arguments for each individual JVM. This prevents each cluster from starting up with a random name e.g. mxserverc1. This way we can specify the cron tasks do not run properties at the instance level for each JVM in the database.
1. In your WebSphere Console, expand 'Server Types' and click on 'WebSphere Application Servers'. From here click on MAXIMOUI1.
2. Under 'Server Infrastructure'  expand 'Java and Process Management' and click on 'Process Definition'. Under 'Additional Properties' click on 'Java Virtual Machine'
3. There will be a box that says 'Generic JVM arguments' in here we want to enter -Dmxe.name=MAXIMOUI1 as seen below.

image

4. Repeat the above steps for your remaining JVM's.  For example Dmxe.name=MAXIMOUI2 and Dmxe.name=MAXIMOIF

Building and Deploying Ear Files
We will be separating out most of our functionality using the mxe.crontask.donotrun property as an instance level property in the database, however we will still need to build multiple ear files to ensure our message-driven beans are only operating on the MIF server. Once done we will deploy two ears MAXIMOUI.ear and MAXIMOIF.ear to our cluster. As we are specifying our do not run information in the database, we won't need to duplicate the maximo.properties file.
1. On your Administrative workstation browse to maximo\applications\maximo\mboejb\ejbmodule\META-INF
2. Create two copies of both the ejb-jar.xml and ibm-ejb-jar-bnd.xmi and call them ejb-jarIF.xml, ejb-jarUI.xml, ibm-ejb-jar-bndIF.xmi, ibm-ejb-jar-bndUI.xmi and leave the original files as you see in the picture below.

image

We will now modify both the ejb-jarIF.xml and ibm-ejb-jar-bndIF.xmi to enable the MDB.
3. Open the ejb-jarIF.xml in a text editor and search for MEA MDB and un-comment the four sections returned, below are the screenshots of each section to un-comment, once done save the file.
a)
image
b)image

4. Open the ibm-ejb-jar-bndIF.xmi in a text editor, again search for MEA MDB and un-comment the two sections then save the file.
image
5. For the ejb-jarUI.xml and ibm-ejb-jar-bndUI.xmi you will want to ensure the above is reversed and all MEA MDB sections are commented out.
6. The last part to building the ear files is creating the separate build commands. As this is WebSphere 8.5.5 we will copy the buildmaximoearwas8.cmd file twice and rename the copies to buildmaximoearwas8IF.cmd and buildmaximoearwas8UI.cmd.

image

7. Open the buildmaximoearwas8IF.cmd in a text editor and add the following text to the top of the file below @echo off

copy /Y c:\IBM\MAXDEV\maximo\applications\maximo\mboejb\ejbmodule\meta-inf\ejb-jarIF.xml c:\IBM\MAXDEV\maximo\applications\maximo\mboejb\ejbmodule\meta-inf\ejb-jar.xml
@echo copied ejb-jarIF.xml to ejb-jar.xml
copy /Y c:\IBM\MAXDEV\maximo\applications\maximo\mboejb\ejbmodule\meta-inf\ibm-ejb-jar-bndIF.xmi c:\IBM\MAXDEV\maximo\applications\maximo\mboejb\ejbmodule\meta-inf\ibm-ejb-jar-bnd.xmi
@echo copied ibm-ejb-jar-bndIF.xmi to ibm-ejb-jar-bnd.xmi

The above entries will copy our modified MIF ejb files to the original files and build them into the ear.
In the same file change the ear file name to maximoIF.ear and save the file.

set EAR_FILENAME=maximoIF.ear

8. Open the buildmaximoearwas8UI.cmd in a text editor and add the following text to the top of the file below @echo off

copy /Y c:\IBM\MAXDEV\maximo\applications\maximo\mboejb\ejbmodule\meta-inf\ejb-jarUI.xml c:\IBM\MAXDEV\maximo\applications\maximo\mboejb\ejbmodule\meta-inf\ejb-jar.xml
@echo copied ejb-jarUI.xml to ejb-jar.xml
copy /Y c:\IBM\MAXDEV\maximo\applications\maximo\mboejb\ejbmodule\meta-inf\ibm-ejb-jar-bndUI.xmi c:\IBM\MAXDEV\maximo\applications\maximo\mboejb\ejbmodule\meta-inf\ibm-ejb-jar-bnd.xmi
@echo copied ibm-ejb-jar-bndUI.xmi to ibm-ejb-jar-bnd.xmi

The above entries will copy our modified UI ejb files to the original files and build them into the ear.
In the same file change the ear file name to maximoUI.ear and save the file

set EAR_FILENAME=maximoUI.ear

9. Run both the buildmaximoearwas8IF.cmd and buildmaximoearwas8UI.cmd to create the ear files, ensure the first command completes fully before starting the other.
10. You can now deploy the ear files, I won't go in to detail of each step of the deployment. You can head over to the following IEA to watch a video on the basic ear deployment.
For the deploying the ears in the cluster we need to ensure 3 things.
  • The application name for the deployment is different for each, for example MAXIMOUI and MAXIMOIF
  • When deploying the UI ear, you want to ensure it's mapped to the MAXCLUSTER and the web server
image
  • When deploying the MIF ear, you want to ensure it's mapped to just the MAXIMOIF JVM.
image
  • And last ensure your UI ear is mapped to the maxcluster_host virtual host and your MIF ear is mapped to the maxmif_host.
Once your ear files are deployed, start the cluster and your MIF servers.

Isolating functionality
Our last step in this basic configuration will be to isolate the cron task functionality to the MIF server, so only the required will be running on the servers hosting your user load.
1. In Maximo, open the 'System Properties' application. Under Instance properties click 'New Row'. Our first row will have the following properties.
  • Property Name: mxe.crontask.donotrun
  • Server: MAXIMOIF
  • Value: JMSQSEQCONSUMER.SEQQOUT
This says all cron tasks will run on the MAXIMOIF server other then the JMSSEQQCONSUMER.SEQQOUT which will be sending transactions outbound through the UI.
2. Click 'New Row' again and add another entry for the first UI server with the following properties.
  • Property Name: mxe.crontask.donotrun
  • Server: MAXIMOUI1
  • Value: JMSQSEQCONSUMER.SEQQIN, BBCron.BBCRON1, ESCALATION. ESCESCBLTNEXP, REPORTLOCKRELEASE, REPORTLOCKRELEASE1, REPORTUSAGECLEANUP, REPORTUSAGECLEANUP1
Specifying all the cron tasks we don't want running on the UI1.
3. Click 'New Row' once more and add the final entry for our last UI server.
  • Property Name: mxe.crontask.donotrun
  • Server: MAXIMOUI2
  • Value: JMSQSEQCONSUMER.SEQQIN, BBCron.BBCRON1, ESCALATION. ESCESCBLTNEXP, REPORTLOCKRELEASE, REPORTLOCKRELEASE1, REPORTUSAGECLEANUP, REPORTUSAGECLEANUP1
Again specifying all the cron tasks we don't want running on the UI.
4. These properties can not be live refreshed and will require a restart of the JVM's to take place.
The above is just a basic configuration, in a real scenario you will likely have many more cron tasks and instances to isolate. You can run a select from your crontaskinstance table to determine all the cron tasks and cron tasks instances in your environment and separate them accordingly.
5. We can also point our inbound web service calls to the MIF JVM specifically.  From the system properties application search for mxe.int.webappurl set this to your MIF server and do a live refresh.

image

The above can be done for mxe.oslc.webappurl and mxe.rest.webappurl as well.

I think at this point I've covered most of the basic configuration of a horizontal cluster, there may be some advanced topics or configuration missed, if so please feel free to comment, ask questions or leave suggestions below. I will end this off with a couple of quick notes regarding the configuration.
* If required to send outbound messages from both the MIF and UI servers (events) the connection factories and queues will need to be defined at the server level instead of the cell level. This way you can use duplicate names. I will document this in a future blog
* the global directory specified in the system properties for your MIF files, must be accessible across all nodes.
* When doing the integration JMS configuration, if partial configuration existed before, ensure to remove it as you create the new configuration.
* mxe.crontask.donotrun properties can be added to the maximo.properties as well, this would require you to duplicate the maximo.properties and specify the mxe.crontask.donotrun properties for each the MIF and UI. You will also need to modify the build scripts to copy the maximo.properties as well.
If I think of any other notes, I will update this document going forward.

Series
Clustering with Maximo and WebSphere 8.5.5 - Part 3 - Isolating Functionality and Deployment

IBM Readme for IBM Maximo Asset Management 7.6.1.3 Fix Pack

  Fix Readme Abstract This fix pack updates IBM® Maximo® Asset Management version 7.6.1, 7.6.1.1, and 7.6.1.2 Content IBM Maximo Asset Manag...