MANAGEMENT OF DEVELOPMENTS AND CONFIGURATIONS
1.1 Introduction
This document describes the methodology and procedures for maintaining the various Maximo environments that will be used in the development and application of the Enterprise Work Management Solution.
The goal of these procedures is to ensure that all developments created by EMA or the City, are controlled and deployed in a systematic and reproducible pattern. This methodology was designed to limit the risk of inconsistent Maximo system behavior when multiple development phases are occurring simultaneously (overlapping work packages).
1.2 Assumptions
· EMA will not have access to the PROD system.
· EMA will be allowed to perform database backups in the DEV and SIT environments. The City will perform database restores for EMA on an ‘as-requested’ basis. Ideally, the response time by the City should be within one hour.
1.3 Methodology
Typically, Maximo configuration and application change work is divided into two separate groups: the Functional Team and the Development Team.
The Functional Team will be responsible for creating 'designs,' but not actually making the changes to the DEV development system.
In DEV, the Development Team will be solely responsible for making all system modifications and configurations, data changes and creation of the related migration packages and ‘Packets.’
The goal of this approach is to ensure that every change to the system is included in a ‘Packet.’ In this way, the Environment Manager (EM) will be able to control the movement of ‘Packets’ between the various Maximo environments. ‘Packets’ will typically be moved from DEV to SIT. Once, the functionality is tested, the same Packets can be moved to QA, TRN and PROD. This methodology provides an extra layer of validation for any changes to the Maximo systems.
The Functional Team will typically have access to a Maximo instance (‘sandbox’ or virtual machine) where they will be able to prototype their solutions. The Functional Team will then document all the required changes and deliver it to the Development Team in the form of a Functional System Specification (FSS) document. The Development Team will then make the changes in DEV. The nature of this procedure will help ensure that any system changes are well documented and that the ‘Design’ document will be reviewed by the Development Team.
The Functional Team will:
· Understand the specific task requirements
· Create a design
· Possibly implement the design or screen change in a Development environment
· Document the design with enough detail that the Development Team can implement it in DEV
· Once developed and unit tested by the Development Team, the Functional Team will perform functional testing on the implementation of the design in the DEV system and document any issues discovered
· Test the implementation of the design in any system to which the package is migrated
The Development Team will perform the following tasks:
· Review of functional system specification
· Implementation and unit testing of functional system specification in DEV
· Update the Requirements Traceability Matrix to document unit test results
· Fix issues found from Functional team testing in DEV and retest
· Creation of Packet after all issues have been resolved and functional testing is completed
· Update the Packet Log document
· Notify Environment Manager that a Packet is pending
The Environment Manager will perform the following tasks:
· Applying Packet(s) to the SIT system
· Ensure successful migration of Packet(s). If unsuccessful, the EM will work with the developer responsible for the Packet to make the required modifications to the Packet. The EM will then migrate the modified Packet.
· Update Packet Log document, PacketLog.xlsx
The DEV system will be the ‘source’ for all migration.
1.3.1 General Notes about Migration
The installation of some Packets will require that the Maximo Database Configuration process be run. Typically, any changes to MaxObjects, MaxAttributes, Indexes, Domains or updating of attribute default values will require a DBConfig operation to be initiated. This requirement should be documented in the Packet.
Before applying some Packets, the Maximo system may need to be placed into ‘Admin’ mode.
1.3.2 Typical Order for Configuration Migration
Table 2‑1: Typical Order for Configuration Migration
Object | Description |
Org | Organization |
Site | Site |
Company Set | Company Set |
Item Set | Item Set |
Currency Codes | Currency Codes |
Account Mapping | Account Mapping |
Database Configuration | Addition of new database tables/fields/attributes |
Auto Scripts comm templates escalations SC Screens |
|
Query | Query |
Start Centers | Start Centers |
Security Groups | Security Groups |
DATA |
|
Addresses, Service Interface | Addresses (OAR) |
UOM | Units of Measure |
Unit Conversions | Unit Conversions |
Company | Vendors |
Company | Manufacturers |
Account Component 0 | Functional Area |
Account Component 1 | Cost Center |
Account Component 2 | Cost Element |
Accounts | Accounts |
Owner Groups | Owner/ Person Groups |
Owners | Owners/ People |
Person | Person |
Person Group | Person Group |
Labor | Labor |
Crafts | Crafts |
Additional Labor / Crafts | Additional Craft |
Crew | Crew |
Crew | Crew Types and Positions |
Storerooms | Storerooms |
Domains for Specifications |
|
Specifications Attributes | Specifications Attributes |
Classifications | Classifications |
Classifications | ClassAttributes |
Failure Class/Code | Failure Code |
Meter Groups/ Meters | Meter Groups |
Commodity Codes | Commodity Codes |
Items | Item Master |
Specifications | Item Specifications |
Inventory | Inventory |
Inventory Balance | Inventory Quantity by bin |
Service Items | Service Items |
Tools (Vehicles & Equipment) | Tools (Generic & Specific Vehicles) |
Tools (Vehicles & Equipment) | Tool Rates |
Contracts | Contracts |
Contracts | Contract Lines |
Purchase Orders | Purchase Orders |
Purchase Orders | Purchase Order Lines |
Locations | Locations |
Locations | Location Specifications |
Locations | Location Meters |
Assets | Assets |
Assets | Asset Specifications |
Assets | Asset Meters |
Assets | Asset Items |
Assets | Asset Attachments |
Routes | Routes |
Routes | Route Stops |
Job Plans | Job Plans |
Job Plans | Job Plan Tasks |
Job Plans | Job Plans Labor |
Outcome Indicator | Outcome Indicator |
PM's | Preventive Maintenance (PM) Plans |
PM's | PM's Job Plan Sequencing |
Auto Routing Information | Auto Routing Information |
Service Level Agreement | SLA |
Service Request | Service Request |
Service Request | Service Request Work Log |
Service Request | Service Request Specs |
Work Orders | Work Orders |
Work Orders | Work Order Tasks |
Work Orders | Work Order Work Log |
Work Orders | Work Order Specifications |
Work Orders | Work Order Attachments |
1.3.3 Migration Manager
This section describes which objects are typically migrated using the Maximo Migration Manager application. It also attempts to document any known issues with the application.
Table 2‑2: Object Typically Migrated using Maximo Navigation Manager Packages
Object | Notes |
Integration Components | External Systems, Enterprise Services, Publish Channels, etc. JSON Mapping |
Actions | Migrate Action Groups separately from Actions (after Actions) |
Automation Scripts and Launch Points | Automation scripts including Integration Automation scripts. MxLoader does not set LP correctly. |
Escalations | May need to remove the instance name before migrating. Deactivate the escalation before migrating and activate it back manually once packages are moved |
Comm Templates |
|
Start Center Templates |
|
MaxApps | Requires putting the system into Admin Mode. |
Start Center | Before creating a migration package for Start Center templates, use the EMA-QUERYTOOL (see Query below) to update the OWNER in DEV if needed. Alternatively, have City run the DB update on SCTEMPLATE.PRESENTATION to replace all the developers’ user IDs with MAXQURY. |
Security Groups | Ensure that authorizations for any applications that have not been migrated are removed before creating the package.
NOTE: Migration Manager migrates the whole security group in one shot which replaces the group in the target system. However, EMA has encountered issues with migrating security groups and access with MxLoader, so recommends using Migration Manager for this task in spite of the limitation. |
1.3.4 MxLoader Procedures
Objects that can be migrated using MxLoader:
Typically objects that contain xml data cannot be easily migrated using MxLoader. For example, Presentations.
Table 2‑3: Procedures for Objects that can be migrated using MxLoader
Object | Notes |
Query | Include the OWNER attribute so you can confirm that the OWNER=MAXQURY. Use the EMA-QUERYTOOL to update the OWNER in DEV if needed. Alternatively, set the OWNER to MAXQURY before loading into other environments.
EMA-QUERYTOOL https://ewms-dev.toronto.ca/maximo/oslc/script/EMA-QUERYTOOL?ACTION=ANALYZE&CLAUSENAME=YourQueryName
This will change the Owner in the following objects: Query, SCTemplate.Presentation and Layout
This will change the KPI Owner and set IsPublic
This will change the Owner for KPI Templates |
Object Structures | If you're migrating object structures with multiple objects, replace PARENTOBJID with PARENTOBJNAME in the MxLoader sheet. Otherwise, you'll get a relationship error. |
Attributes | You cannot set a default value on an attribute in maxattributecfg to a variable (e.g., :COTPERSON.COTDIVISION) because it tries to validate that against the table domain on the attribute. Set it manually after the attribute has been loaded by MxLoader. |
KPIs | Ensure that if you are performing division in your KPI SQL query (e.g., % calculations), check for the divisor being 0 (case when then end) before calculating the value. |
GL Components | Replace '-' in the GL Components to '.'. Only use hyphens as the separator for the chart of accounts. |
1.3.5 Manual Loading
The following objects require some manual intervention in order to load:
Table 2‑4: Objects that require manual intervention to load
Object | Notes |
Failure Hierarchy | These must be created manually in each system. NOTE: The new version of MxLoader does not support failure hierarchy. The older version that does support failure hierarchy does not work in a single-sign on environment (QA, TRN, PROD). |
Presentation | Presentation xml files are imported using the ‘Application Designer’ application. |
Inspection Forms | Export Inspection forms using the Publish Channel, import using the Enterprise Service. |
1.3.6 Application Screen Modifications
Typically, application screens are exported from the DEV system and then imported into the other systems as part of the Packet. However, there may be simultaneous development by different Developers occurring on a particular screen. For example, one Developer is adding a new attribute to the Work Order screen specifically for SWMS, and another Developer is adding an attribute required by TW to the same screen. The SWMS Developer may have completed their change, but the TW Developer may be only partially complete. If the SWMS Developer creates a new Packet that contains the entire screen, but the TW functionality is not yet working, there will be issues when the screen is imported into the QA system. In this case, the following procedures can be used.
IBM provides two Screen Upgrade Tools to identify and apply application changes. The Developer will use the MXDiff Tool to generate an mxs file that will identify the differences between the original presentation XML and the updated XML. The Developer must ensure that the updated XML file only contains the changes that are ready to be migrated. The EM will use the MXApply Tool to apply the changes in the mxs files to the other systems.
Screen changes can be encapsulated as ‘xml snippets’ in the mxs files that can be applied to a different environment. The ‘xml snippet’ will only contain the portion of the screen that is particular to the new attribute. During the migration of the Packet, the EM will use the MXApply Tool.
1.4 Packets
With many Developers working on different aspects of this project, the key challenge is to ensure that the various developments/configurations created by EMA are migrated to the various Maximo environments in complete, tested packages. In addition, we need to ensure that the process of creating a ‘CoT configured’ Maximo system is repeatable.
The word Packet is used to describe all the required components of a particular ‘development’ or functional requirement. This could include Maximo Migration Packages, XML screens, SQL scripts, etc. A Packet could be a large or small grouping of components. The only criteria being that the migration of a single Packet must not cause any inconsistencies in the Maximo system.
The goal is to be able to recreate any version of any system by starting with a base Maximo instance and migrating the Packets in a precise order.
An Excel spreadsheet, PacketLog.xlsx, will be used to track the ‘progress’ of the migration of the ‘Packets’ in various Maximo environments.
When a Developer has a unit of development ready to be deployed, they will create a Packet that includes all of the new components for that unit of the development. Typically, the components would include migration packages (zip files), xml files (or xml snippets) and a mandatory ‘Installation’ text file (Installation.txt).
The installation text file will contain:
· the list of components included in the Packet;
· which objects in Maximo are affected; and
· installation instructions for the Packet. Instructions assume the user is experienced in the use of Migration Manager, MxLoader and other supporting Maximo tools.
1.4.1 Sample Packet Folder
Packets
└───p00XX
├───Installation.txt
├───Migration Manager Packages
├───MxLoader Files
├───classes (if java class customizations are required)
│ └───applications
│ └───maximo
│ ├───businessobjects
│ │ └───classes
│ │ └───cot
│ │ └───app
│ └───maximouiweb
│ └───webmodule
│ └───WEB-INF
│ └───classes
│ └───cot
│ └───webclient
│ └───beans
├───dbc_scripts
├───migration
└───presentations
└───p00YY
├─── ...
See Appendix for a sample Installation.txt file.
The Developer will then access the Packet Log spreadsheet (PacketLog.xlsx) from an EMA MS Teams folder.
Example file: PacketLogTemplate.xlsx
Figure 2‑1: Example Packet Log Template file
The Developer will add a new row to the spreadsheet and create the next available Packet Number by incrementing the previous number by one (e.g., p00078). In addition, they will update the ‘Developer’ column with their name to indicate that the number is reserved for them. Developers must ensure that they create the Packet before obtaining a new Packet Number. This will prevent the issue of another Developer adding a Packet between the time the number is reserved and the time the Packet is uploaded. Remember that the order of Packets could be significant.
The Developer will move their Packet to a shared folder for the system: Packets/ReadyToBeInstalled
Toronto EWMS Program > Migration Packets > Packets > ReadyToBeInstalled.
Note that this folder is NOT available to COT.
Then the Developer will notify the Environment Manager that a new Packet is ready to be installed.
The EM will move the Packet to a working folder: Packets/SIT/Installing.
The EM will:
· Perform a DB backup in SIT. For other environments, a DB backup request will be sent to the City for the environment to which the Packet is being migrated. (Post Go-Live, a different procedure may be implemented).
· If any Java Class changes are listed in the Packet, make a backup of affected Class folders.
· If any application updates are listed in the Packet, make a backup of the affected applications or System XML. Presentation XML files will be exported and saved in the ‘Presentation XML Files’ folder before any application changes are made.
· Document any manual steps involved (Installation.txt). For example, modify an existing screen by exporting the current version of the screen and make a backup of the xml file.
Next, the EM would migrate the Packet.
If there were any errors:
· Notify the Developer of the error
· Restore the system to its previous state (e.g., restore database, or import backup application XML)
· Move the Packet to the Packets/Failed Folder.
If Successful:
· Move the Packet to the Packets/SIT/InstalledPackets folder (this will have security so that only EM will have write access).
· Update the ‘Packet Log’ to show the date that it was installed in the system.
· Notify Developer and Functional Lead that the Packet has been applied to a system (e.g., QA).
At certain points in the development cycle, the EM may choose to consolidate all of the Packets to date in a new database/system backup. This would provide a ‘snapshot’ of the system which could be used as a ‘restore’ point. Then a system could then be restored starting with the ‘snapshot,’ applying only the Packets that were created after the ‘snapshot’ was made. This process would be much faster than starting from a new Maximo install and applying all Packets in order.
Once a Packet has been verified for completeness in SIT by both the Developer and the Functional Lead, the Packet is ready for the QA environment. After the development has been validated in QA it can be moved to the TRN and/or PROD environments.
1.4.2 Packet Flow
Figure 2‑2 : Packet Flow diagram
Often after functionality has been reviewed in QA (or TRN), there may be a need to modify the functionality. If changes to the functionality are required after a Packet has been applied, then a new Packet must be made. Note: Once a Packet has been migrated it will never be modified. The EM will be responsible for ‘locking’ a Packet once it has been applied to a system. The EM will change the status of the Migration Package definition in the system to LOCKED so no new packages can be created and distributed. There may even be cases when a new Packet needs to be created to reverse the effects of a previous Packet. However, this additional step is necessary to ensure that any system can be re-created by applying the Packets in order.
1.5 Data Migration
Any data that needs to exist in all Maximo environments will not be entered manually in Maximo. It will be imported using MxLoader, Maximo Integration Framework (MIF) files or populated automatically from an integration.
MxLoader or MIF formatted spreadsheets will be created for data elements to be imported into Maximo. Packets will be created that contain the import spreadsheets and the instructions to import the data.
Please refer to the Data Load Guide for details.
City of Toronto Collaboration > WP SWMS > System Design > As-Builts
1.6 Priority Fix
There may be certain situations when an issue is reported that needs to be addressed as soon as possible. However, due to a development being underway in SIT (i.e., in the middle of making a configuration for one Division and it isn’t complete or ready to migrate), it may not be possible to create a Packet that encapsulates only the required fix as it overlaps other development still in progress. In this case, it may be necessary to create a ‘Priority Fix.’ A ‘Priority Fix’ is a special type of Packet that is intended as a ‘temporary fix.’ The ‘Priority Fix’ will be applied to the required environments to address the issue immediately. The functionality contained in the ‘Priority Fix’ will be incorporated into a Packet once the development effort is complete that contains the developed functionality and the priority fix, that will be applied at a future date eliminating the need to carry the ‘Priority Fix’ forward to future installs.
1.7 COT Changes During EMA Development
Once a Division has gone into production, enhancement requests for one or more Divisions may be addressed by the COT Sustainment Team while development for one or more other Divisions is underway by EMA. COT development in this situation will be based on protocols agreed to by both parties. See Appendix E, Flow Charts, for COT protocols relating to Change Coordination, Change Implementation, Packet Application and Testing & Release.