Maximo Plug-in Configuration
The Maximo Integration Plug-in enables the DataSplice server to connect to a Maximo Application Server. Maximo versions 5 and later are supported. Note that the same plug-in can handle the various versions of Maximo, but different configuration files (Views, etc) are needed because of the schema differences between the versions.
The plug-in uses Java Remote Method Invocation (RMI) to communicate with a Maximo Application Server, which ensures that all transactions are processed in a way that respects user permissions, customizations, etc.
Additional Installation Steps
Several steps need to be performed prior to starting the DataSplice server. These can be performed after the server has been started - just remember to restart the service afterwards.
Copy Initial Configuration Files
The plug-in ships with initial configuration files that provide a default configuration for various versions of Maximo. These files need to be manually copied for initial installations. Navigate to the Server\Resources\Maximo <Version> Storage\DS <Version> and copy the contents into the root Server\Storage\ folder. The <Version> numbers refer to the corresponding version of Maximo (6.x or 7.x) and the version of DataSplice being used (3.1 or 3.2)

When upgrading the plug-in, the files can also be copied to use updates from the base package. Care must be taken to not overwrite local configuration changes however.
Run TSQL Script for SQL Server
If using the SQL Server version of Maximo, a function needs to be installed to allow DataSplice to recursively fetch hierarchical location records from the database. The script Server\Resources\Scripts\Func_DS_GetSubLocations.sql needs to be run against the Maximo database using Query Analyzer or another database utility.
Recompiling RMI Stub Files
RMI communication relies on stub classes to work over the network, and in some cases these are not up to date, which causes problems with the .NET to Java interface used by the plug-in. Unfortunately it is difficult to tell if the files are out of date, but this will result in errors like "Method '<method>' in type '<type>' from assembly 'transientProxies', Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation" or "The invoked member is not supported in a dynamic module" when trying to commit transactions to Maximo.
Refer to the Recompiling Maximo RMI Stub Files document in the addendum for instructions on recompiling these classes.
Setting Up the Java Classpath
The Java environment used by the plug-in will need to be able to access the various MBO Java classes that are passed across the RMI connection. This option uses the standard Java syntax for classpaths, which on Windows machines consists of various paths separated by semicolons (;). We recommend creating a <InstanceRoot>\Classpath\ folder to contain the jar files needed to access Maximo. It's possible to reference files anywhere on the file system, it is usually easier to keep them in one spot.
The classpath must contain the various psdi.* classes that implement the MBO layer. These can be referenced in two ways:
- JAR File
- Use the Java jar utility to create an archive of the MBO classes
(jar vcf psdi.jar psdi\*) and copy this file to the DataSplice server.
This will need to be updated every time Maximo is patched or the class
files are otherwise changed.
- Parent Directory Reference
- Reference the folder that contains the psdi classes. This is used primarily when DataSplice is installed on the same machine as Maximo, and allows the plug-in to directly reference the class files used in the Maximo hierarchy. Note that referencing network paths is fairly unreliable and should not be used.
In addition, if the MBO objects have been customized to use classes in addition to those in the above jar packages, those might need to be added to the classpath.
Additional configuration for Maximo 7
Use Java version 1.6 for Maximo 7
For Maximo 7 the DataSplice server will need the javax.mail package mail.jar available from Sun in it's CLASSPATH. Also, log4j jar must be in the server's CLASSPATH. Log4j can be found on the Maximo deployment server, your version may vary but a typical location is c:\Maximo71\applications\maximo\lib\Log4j-1.2.13.jar
Application Server Security (LDAP Integration)
Refer to the Maximo Application Server Authentication document in the addendum for details on the additional configuration steps needed if Maximo is not configured to use its built in authentication mechanism.
Initial Configuration

Once the installation steps are complete and the DataSplice service is started, the following steps are typically used to configure the plug-in:
- Create an ADO.NET connection profile named maximo that connects to the target database.
- Specify the correct Java Runtime Environment to use by providing a value for the JVM DLL Path option. The list will display all the runtimes registered in the Windows registry, or you can specify a different runtime by copying the full path to a jvm.dll.
- Update the Java Classpath option to reference the necessary Java classes.
- Provide values for the Maximo Server Name, User Name, User Password, and Site (5.x only) options that will allow the DataSplice to connect to the target Maximo application server.
- Select maximo for the Maximo Database Connection Profile option.
- Save any changes. This may take a minute or so to process in some cases.
- Verify that the Plug-in Status Message does not contain any initialization errors. In some cases the server must be restarted for changes to take effect, which will be indicated in the status message.
- Update role membership by adding Maximo security groups and users the the desired roles. More information is provided in the Role Base Permissions section.
Basic Settings
The following settings control how the plug-in interacts with Maximo:
| Setting/Attribute | Description |
|---|---|
| Session Timeout | Specifies the time (in minutes) that user sessions are cached by the server. This improves performance by reducing the frequency that new sessions are created in Maximo. |
| User Authentication Cache Timeout | Specifies the time (in minutes) that information regarding a user or group is cached by the server. |
| JVM DLL Path |
Specifies the Java Runtime Environment used by the plug-in to communicate with Maximo. This must be compatible with the runtime used by the application server. |
| Java Classpath |
Specifies the classpath used by the Java runtime, which must be able to access the various MBO class files. |
| Java Memory Megs |
Maximum memory available to the Java runtime. Defaults to 256MB. |
| Maximo Authentication Domain Name |
Name of the authentication domain provided by the plug-in. Defaults to MAXIMO. |
| Maximo Server Name | Specifies the RMI address of the application server to connect to. This should be formatted like <network address>:<port>/<maximo instance> If the port is not specified, 1099 is used by default If the maximo instance is not specified, MXServer is used by default |
| Maximo User Name | Account used to connect to Maximo and access basic information about the available users and their permissions. |
| Maximo User Password | Password needed to log in. |
| Maximo Site | Site associated with log in, only needed for Maximo 5.x |
| Authentication Token Provider | Specifies the provider for obtaining authentication tokens when the server is using application sever authentication. See the Maximo Application Server Security Document for more information about configuring these options. |
| Maximo Database Connection Profile |
Optional name of a ADO.NET Data Source connection profile that can be used to query information directly from the database rather than needing to go through the MBO layer. This can have significant performance improvements in many cases. |
Plug-in Status Message
This option prints various status and diagnostic information regarding the status of the plug-in in. The contents are particularly useful for troubleshooting connectivity problems.
When a connection has been established successfully, the status of all the internal sections will be Ok:
Maximo Version MAXIMO Application Server 6.2.3 Build 209 DB Build V600-664 [majorVersion = 6]
Plug-in Status = Ok
Java Interop Status = Ok
Java RMI Communication Status = Ok
Java RMI Communication Status Details
RMI host = maxdev1 port = 1099 searching for object name = MXServer
List RMI Registry:
found RMI object = MXServer
ADO.NET Database connection using connection profile = maximo
Database connection Ok
Field Name Mapping
Many of the methods exposed by the plug-in attempt to automatically apply changed values to Maximo when transactions are committed. In order for this to work, the plug-in needs to know how to map the fields in the DataSplice views to the corresponding attributes in Maximo.
Explicit mappings are not needed if the names are the same ignoring spaces and text casing (for instance, "Start Date" and "STARTDATE" are automatically associated). Mappings are typically global and will apply to all views, but view-specific mappings can be added by specifying the key like <View Name>::<Field Name>.
In general, this needs to be updated if extra fields, etc. are added to the DataSplice views and are editable. Add an entry for each field that maps DataSplice field to the corresponding Maximo attribute name.
MBO Update Settings
This section is used to control which attributes are dynamically generated by Maximo when creating new records.
The default values for this section do not need to be modified in the majority of installations.
Security Settings
This section defines attributes for users and groups when they have corresponding permissions available in Maximo, which are later referenced by the views to enable various functionality. This section applies to Plug-In version 4.1.175 and lower. Version 4.1.176 (and up) utilize the internal DataSplice roles to define the security attributes (see Security Attributes by Role).
| Application/Option Name | DataSplice Attribute |
|---|---|
| ASSET::INSERT (6.x) | MX_CAN_CREATE_EQUIPMENT |
| ASSET::METREADNEW (6.x) | MX_CAN_ADJUST_EQUIPMENT_METER |
| ASSET::SAVE (6.x) | MX_CAN_EDIT_EQUIPMENT |
| EQUIPMNT (5.x) | MX_CAN_EDIT_EQUIPMENT |
| EQUIPMNT::ADJMETER (5.x) | MX_CAN_ADJUST_EQUIPMENT_METER |
| EQUIPMNT::INSERT (5.x) | MX_CAN_CREATE_EQUIPMENT |
| INVENTOR::CURBALADJ | MX_CAN_ADJUST_CURRENT_BALANCE |
| INVENTOR::PHYSCNTADJ | MX_CAN_SET_PHYSICAL_COUNT |
| INVISSUE::SAVE | MX_CAN_ISSUE_INVENTORY |
| INVISSUE::TRANSFERS | MX_CAN_TRANSFER_INVENTORY |
| LOCATION::INSERT | MX_CAN_CREATE_LOCATION |
| LOCATION::METREADNEW (6.x) | MX_CAN_ADJUST_LOCATION_METER |
| LOCATION::SAVE | MX_CAN_EDIT_LOCATION |
| QUICKREP::INSERT | MX_CAN_CREATE_WORKORDER |
| QUICKREP::INSERT | MX_CAN_CREATE_WORKORDER |
| QUICKREP::REPDOWN | MX_CAN_REPORT_DOWNTIME |
| QUICKREP::SAVE | MX_CAN_EDIT_WORKORDER |
| RECEIPTS::SAVE | MX_CAN_EDIT_POLINE |
Security Attributes by Role
MAXIMO
The MX_HAS_PERMISSION attribute is defined with place holders for the Application and Option filtering. This allows for additional attributes to be defined by referencing the MX_HAS_PERMISSION attribute while passing in the desired application and option values to check.
For example: we can define a new work order attribute, MX_CAN_CREATE_WO as := ${MX_HAS_PERMISSION('WOTRACK','INSERT')}
| Plug-in Ver. 4.1.175 (and down) | Plug-in Ver. 4.1.176 (and up) | Attribute Value |
|---|---|---|
| New in 4.1.176 | MX_HAS_PERMISSION | := query( "Application Security", "Option Name", " PersonID = ${MX_PERSONID} and App = ${1} and 'Option Name' = ${2} " ) is not null. |
Additionally, there are 3 attributes required for proper execution of DataSplice. Typically, these attributes are predefined and set when installing the Plug-in. However, how these attributes get defined (and where) has changed between version 4.1.150 and 4.1.151. Thus, when upgrading from version 4.1.150 (or lower) to version 4.1.151 (or higher), the administrator may need to create the following attributes in the MAXIMO role.
If the "People" view is available in the Support section of views, then the attribute definitions needed are;
| Attribute Name | Attribute Value |
|---|---|
| MX_DEFAULT_SITE | := query( "People", "Default Site", "LoginID = ${DS_USER}" ) |
| MX_CURRENT_ORG | := query( "Site Info", "OrgId", "SiteID = ${MX_CURRENT_SITE}" ) |
| MX_PERSONID | := query( "People", "PersonID", "LoginID = ${DS_USER}" ) |
If the "People" view is NOT available in the Support section of views, then the attribute definitions needed are;
| Attribute Name | Attribute Value |
|---|---|
| MX_DEFAULT_SITE | := query( "Labor Codes", "Default Site", "LoginID = ${DS_USER}" ) |
| MX_CURRENT_ORG | := query( "Site Info", "OrgId", "SiteID = ${MX_CURRENT_SITE}" ) |
| MX_PERSONID | := query( "Labor Codes", "PersonID", "LoginID = ${DS_USER}" ) |
Administrators can copy the new views added in version 4.1.151 from [Root DataSplice]\Server\Resources\Maximo [version 6 or 7] Storage\[v3.1 or v3.2]\Views\Maximo\Support
- People
- Site Info
- User Preference
MAXIMO Condition Monitoring
| Plug-in Ver. 4.1.175 (and down) | Plug-in Ver. 4.1.176 (and up) | Attribute Value |
|---|---|---|
| MX_CAN_ADJUST_ASSET_METER | MX_CAN_ADD_ASSET_METER_READ | := ${MX_HAS_PERMISSION('ASSET','METREADNEW')} |
| MX_CAN_ADJUST_LOCATION_METER | MX_CAN_ADD_LOCATION_METER_READ | := ${MX_HAS_PERMISSION('LOCATION','METREADNEW')} |
| New in 4.1.176 | MX_CAN_ADD_ASSOCIATE_USER | := ${MX_HAS_PERMISSION('ASSET','USERCUST')} |
| MX_CAN_CREATE_ASSET | MX_CAN_CREATE_ASSET | := ${MX_HAS_PERMISSION('ASSET','INSERT')} |
| MX_CAN_CREATE_LOCATION | MX_CAN_CREATE_LOCATION | := ${MX_HAS_PERMISSION('LOCATION','INSERT')} |
| MX_CAN_EDIT_ASSET | MX_CAN_EDIT_ASSET | := ${MX_HAS_PERMISSION('ASSET','SAVE')} |
| MX_CAN_EDIT_ASSET_SPECS | MX_CAN_EDIT_ASSET_SPECS | := ${MX_CAN_EDIT_ASSET} |
MAXIMO Inventory
| Plug-in Ver. 4.1.175 (and down) | Plug-in Ver. 4.1.176 (and up) | Attribute Value |
|---|---|---|
| MX_CAN_ADJUST_CURRENT_BALANCE | MX_CAN_ADJUST_CURRENT_BALANCE | := ${MX_HAS_PERMISSION('INVENTOR','CURBALADJ')} |
| MX_CAN_SET_PHYSICAL_COUNT | MX_CAN_SET_PHYSICAL_COUNT | := ${MX_HAS_PERMISSION('INVENTOR','PHYSCNTADJ')} |
| MX_CAN_ISSUE_INVENTORY | MX_CAN_ISSUE_INVENTORY | := ${MX_HAS_PERMISSION('INVISSUE','SAVE')} |
| MX_CAN_TRANSFER_INVENTORY | MX_CAN_TRANSFER_INVENTORY | := ${MX_HAS_PERMISSION('INVISSUE','TRANSFERS')} |
| MX_CAN_EDIT_POLINE | MX_CAN_PERFORM_RECEIPTS | := ${MX_HAS_PERMISSION('RECEIPTS','SAVE')} |
MAXIMO Work Order
| Plug-in Ver. 4.1.175 (and down) | Plug-in Ver. 4.1.176 (and up) | Attribute Value |
|---|---|---|
| New in 4.1.176 | MX_WO_SECURITY_APP | WOTRACK |
| MX_CAN_CREATE_WORKORDER | MX_CAN_CREATE_WORKORDER | := ${MX_HAS_PERMISSION(${MX_WO_SECURITY_APP},'INSERT' )} |
| MX_CAN_EDIT_WORKORDER | MX_CAN_EDIT_WORKORDER | := ${MX_HAS_PERMISSION(${MX_WO_SECURITY_APP},'SAVE')} |
| MX_CAN_REPORT_DOWNTIME | MX_CAN_REPORT_DOWNTIME | := ${MX_HAS_PERMISSION(${MX_WO_SECURITY_APP},'REPDOWN')} |
Troubleshooting
The plug-in is distributed with a couple of scripts that can help diagnose connectivity problems with Maximo. These are contained in the <Instance Root>\Server\Resources\JavaTest\ folder. The scripts run simple Java applications that are completely independent from DataSplice, and are useful for distinguishing problems with the DataSplice configuration vs. issues with the associated Maximo services.
The scripts contain several path variables to reference Java and the Maximo class files. Edit these values and then run the scripts to test the functions. Typically these should be run from the machine the DataSplice Server is installed on to verify that the appropriate services are available.
- RMI Services Test (run_RMITest.bat)
- This script connects to the specified RMI service and prints out the exported objects. This tests that 1) the RMI services are accessible and 2) the desired Maximo server instance is available. The list of exported objects should contain the instance referenced in the Maximo Server Name option, and if this is not the case the plug-in will not be able to initialize.
- MBO Connectivity Test (run_MaximoDsTest.bat)
- This test attempts to establish a session with the Maximo application server and access data in one of the MBO objects. Again, if this test is not successful then the plug-in will not have any chance of working correctly.
RMI Class Errors
In some cases, error messages will be displayed when committing transactions to Maximo with the following messages:
- Method '<method>' in type '<type>' from assembly 'transientProxies', Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation
- The invoked member is not supported in a dynamic module
This is an indication the one or more RMI stub classes is out of date and needs to be recompiled. Refer to the Recompiling Maximo RMI Stub Files document in the addendum for instructions on recompiling these classes.
Last modified 2010-04-07 03:45 PM