Maximo to Tandem - Update Asset Properties
Description
This solution synchronizes asset data from Maximo to Tandem by updating user-defined parameters, providing actionable insights such as open work order and service request counts, dynamic URLs for each asset, and other key operational details. It also enriches Tandem assets with Maximo properties like installation date, description, and manufacturer, leveraging Tandem’s visualization capabilities for enhanced asset management.
Solution Features
| Feature | Description |
|---|---|
| Synchronize Maximo Assets to Tandem | The solution reads assets from IBM Maximo and updates the Tandem facility with the asset properties. |
| Asset Properties | The solution updates the Tandem asset properties with the Maximo asset properties. |
| Work Orders and Service Requests Counts | The solution reads the work orders and service requests for each asset and updates the Tandem asset with the counts for each status. |
| Dynamic URLs | The solution generates dynamic URLs for work orders and service requests in Maximo for each asset. |
Pre-Requisites
This solution assumes that access credentials with the appropriate permissions are available to read and write data in Tandem and to access the IBM Maximo API.
Autodesk Tandem
Before starting this solution, ensure that a Tandem facility is fully set up. For detailed instructions, refer to the Tandem Help. All required properties must be present in the Tandem facility’s template, as listed in the User-defined parameters section.
Register in Autodesk Platform Services (APS)
An application with access to the Tandem Data API should be created in Autodesk Platform Services. The client ID from this application should be added as a user in the Tandem facility with Edit/Manage permission.
To obtain a client id and client secret for authentication, please follow the tutorial found here.
To add the client id and secret to the Tandem facility, please follow the tutorial found here.
User-defined parameters
The Tandem facility for this solution will need to have a category with the following minimum set of user-defined parameters configured in Tandem. These parameters will be used to map Maximo asset properties in Tandem.
The optional fields are marked as (Optional) in the table below. If these fields are not configured, the
solution will still work, but the corresponding data will not be updated in Tandem.
| Property Name | Description | Data Type | |
|---|---|---|---|
| OrgId | Organization id which is the account represented on IBM Maximo. This is usually 'Autodesk', unless the client wants to rename this otherwise. | String | |
| SiteId | The building id which represents a facility in Tandem. | String | |
| AssetId | The unique id of an Asset coming from IBM Maximo. | Number | |
| AssetNum | The asset name or num from IBM Maximo which is the same as element name in Tandem. | String | |
| NewAssetNum | The new asset number or name changed. | String | |
| Description | Asset Description | String | |
| Location | Asset Location which is mapped to Element Level. | String | |
| StatusDescription | A string representation of the Asset Status coming from Maximo. | String | |
| SerialNum | Asset Serial Number | String | |
| Manufacturer | Asset Manufacturer | String | |
| Vendor | Vendor supplying the asset. | String | |
| GLAccount | GLAccount number that is associated with the Asset. | String | |
| HealthScore | The health score represented in a numeric format. | Number | |
| AccuracyEU | The value summed with the Span, URV, and Reading EU fields to obtain the total accuracy of the asset. | String | |
| Priority | Number | ||
| WorkOrdersUrl | (Optional) The unique url in Maximo to all the work orders for the asset. | Hyperlink | |
| ServiceRequestUrl | (Optional) The unique url in Maximo to all the service requests for the asset. | Hyperlink | |
| WOCount | (Optional) The total work orders on this asset. | Count(Integer) | |
| SRCount | (Optional) The total service requests on this asset. | Count(Integer) | |
| WOInProgress | (Optional) The total work orders in the 'In Progress' status. | Count(Integer) | |
| WOWaitingMaterial | (Optional) The total work orders waiting for Material. | Count(Integer) | |
| WOWaitingApproval | (Optional) The total work orders on this asset that are approved and ready to be actioned. | Count(Integer) | |
| WOWaitingPlanning | (Optional) The total work orders on this asset that are waiting for the planning to be complete. | Count(Integer) | |
| WOWaitingScheduling | (Optional) The total work orders on this asset that are awaiting schedule to start action. | Count(Integer) | |
| SRNew | (Optional) The total number of new Service Requests on this asset. | Count(Integer) | |
| SRQueued | (Optional) The total number of Service requests that are queued for action. | Count(Integer) | |
| SRPending | (Optional) The total number of Service Requests that are in 'Pending' status. | Count(Integer) | |
| SRInProgress | (Optional) The total number of Service Requests that are in 'In Progress' status. | Count(Integer) | |
| FlexField | (Optional) A Flex field with constant value which can be used for asset filter in Tandem. This field is optional. For example, this can be a parameter in the ‘Maximo’ Category called “Tandem Connect Pipeline” with a static value of “Maximo > Tandem Pipeline” for all assets to assist with troubleshooting down the road. | String |
IBM Maximo
For IBM Maximo API, the logged-in user must have the correct permissions set for API access. Follow the documentation here.
An API user must be created and configured in IBM Maximo with appropriate permissions to read and write asset data. For information on how to create the API key, please refer to the help docs IBM Maximo Help.
Basic Setup - Minimum Configuration
This section covers the minimum configuration required to get the solution running. The necessary parameters and their values for each plugin are detailed below. Please follow the instructions on the solution walkthrough to set up the solution.
IBM Maximo Stream Plugin
| Parameter Name | Description | Required |
|---|---|---|
| Authentication Method | The authentication method for Maximo APIs | Yes |
| Authentication Value | The corresponding authentication value | Yes |
| Maximo Base URL | The Maximo application base URL (must use HTTPS) | Yes |
| Entity | The entity that must be read from Maximo. | Yes, make sure its configured as Assets with WO&SR |
| Entity Parameter List | The JSON object that configures mapping, filters and columns for the Assets, Work Orders and Service Requests |
No, if not specified, the default values would be used. See the plugin HELP for more information. |
| Static Data | The JSON object which has the static data to be passed on to the next plugins in the solution. | Yes, for the solution please copy the Static Data provided in the Appendix-2 below. |
The Maximo Base URL can be determined by referencing the URL used to access Maximo in a web browser. For example, if accessing Maximo at https://maximo.example.com/maximo, the Maximo Base URL would be https://maximo.example.com. The base URL may also be found in the Maximo API documentation. In some installations, a specific API endpoint such as https://maximo.example.com/api may be configured in System Configuration > Platform Configuration > System Properties, filtered by the property `mxe.oslc.restwebappurl`.
Autodesk Tandem Service Plugin
For the Autodesk Tandem service plugin, enter the credentials created while setting up the application in Autodesk Platform Service (APS) and the tandem facility details.
| Parameter Name | Description | Required |
|---|---|---|
| Client ID | The client ID from APS account setup | Yes |
| Client Secret | The client secret from APS account setup | Yes |
| Facility URN | The URN of the Tandem facility | Yes |
| Data Processing | The type of data processing to perform | Yes, For the scan its Retrieve Generic Assets and for update tandem must be Update Asset Properties |
Detailed Solution Overview
This section details all components involved in the solution pipeline, including their configuration and purpose.

IBM Maximo Stream
The IBM Maximo Stream plugin reads the assets along with their WorkOrders and ServiceRequests from IBM Maximo and passes them to the next plugin in the solution. The below parameters are used to configure the plugin and its behavior:
Entity: The stream plugin reads the
Assets with WO&SRentity from IBM Maximo. This entity is configured to read the assets along with their work orders and service requests. The fields to read for the assets, work orders, and service requests are defined in theEntity Parameter Listparameter of the plugin.Entity Parameter List: The
Entity Parameter Listparameter is a JSON object that defines the fields to read for the assets, work orders, and service requests. The default values are provided in the Appendix section of this document. Below is the default configuration for theEntity Parameter List, where each entity has configuration likeselectwhich says which columns / properties for the entity to be read,filterwhich will filter out entities based on the condition provided,mappingwhich transforms the columns from Maximo into something that is specific to the destination in this case Tandem.Static Data: The
Static Dataparameter is a JSON object that contains the configuration for the solution. This is provided in the Appendix section of this document along with a guide on how to configure it.
Converters
There are two instances of this plugin used in the solution.
Transform: This plugin contains the transformation logic of converting the Maximo properties to the Tandem user defined properties. This converter reads the data from Maximo and the configuration from the Scheduled data stream for the user defined properties. Then applies the transformation logic for the
propertiesand thefixedProperties. The plugin calculates the values for alldynamicPropertiesand sends them as a batch to Tandem to be updated for the asset. If the user defined properties in Tandem are configured differently to the out-of-the-box properties provides, then the user has to update them accordingly as mentioned above in the Scheduled Data Stream plugin.PrepTandem: The converter plugin which will prepare the incoming object to be of the format accepted by the Tandem Service. This creates a
tcMetadataobject that contains thefacilityId,modelIdand theassetIdwith thedataobject containing the properties and its values.
Throughput Controller
This plugin enables solutions to send a limited number of API calls to the Tandem service, ensuring we do not overload or exceed Tandem’s rate limits. By default, the plugin is configured to send only 50 requests every 15 seconds. If this configuration needs to be adjusted, it is crucial to avoid generating an overwhelming number of API calls within a short period.
Autodesk Tandem Service
The Autodesk Tandem Service plugin is responsible for scan and updating the assets with properties from Maximo in Tandem. There are two instances of this plugin used in the solution:
- Retrieve Generic Assets: This instance is used to retrieve the assets from Tandem and update them with the
properties from Maximo. It uses the
tcMetadataobject created by the PrepTandem converter plugin to update the properties for each asset. - Update Asset Properties: This instance is used to update the properties for the assets in Tandem. It uses the
tcMetadataobject created by the PrepTandem converter plugin to update the properties for each asset.
Troubleshooting
- Properties not being updated in Tandem
- the possible issue will be with the User defined properties and the category they are created.
- The attribute is used in the facility template for Tandem Facility.
- The asset uses the Classification where the attribute is applied.
- The asset in Tandem must exactly match the
attributevalue in theAssetFilterparameter of the Autodesk Tandem Service plugin at the end of the solution.
- Other Issues
- Check the
Exceptiontab in each plugin for detailed error messages - Verify all required parameters are properly configured
- Ensure API credentials have appropriate permissions
Appendix
Below are the configurations that can be copied into the plugin IBM Maximo Stream.
IBM Maximo Stream - Entity Parameter List
| Section | Field | Description |
|---|---|---|
| Assets | select | Comma-separated list of asset fields to retrieve from Maximo. |
| filter | Filter condition to select specific assets (e.g., by site or status). | |
| mapping | Maps Maximo field names to Tandem property names. | |
| orderBy | Field to order the asset results by (e.g., +assetnum). |
|
| Work Orders | select | Comma-separated list of work order fields to retrieve from Maximo. |
| groupByCountField | Field used to group and count work orders (e.g., by status). This is required to be set to status, if status counts are to be displayed in Tandem. |
|
| ServiceRequests | select | Comma-separated list of service request fields to retrieve from Maximo. |
| groupByCountField | Field used to group and count service requests (e.g., by status). This is required to be set to status, if status counts are to be displayed in Tandem. |
- The
selectandfilterfields control which data is retrieved from Maximo.- The
mappingobject ensures Maximo fields are correctly mapped to Tandem properties.groupByCountFieldis used to aggregate counts by status for work orders and service requests.
{
"Assets": {
"select": "assetid,assetnum,newassetnum,description,location,status_description,moved,serialnum,manufacturer,vendor,location,glaccount,priority",
"filter": "<UPDATE FILTER HERE>",
"mapping": {
"orgid": "OrgId",
"siteid": "SiteId",
"assetid": "AssetId",
"assetnum": "AssetNum",
"newassetnum": "NewAssetNum",
"description": "Description",
"location": "Location",
"status": "StatusDescription",
"serialnum": "SerialNum",
"manufacturer": "Manufacturer",
"vendor": "Vendor",
"glaccount": "GLAccount",
"healthscore": "HealthScore",
"accuracyEU": "AccuracyEU",
"priority": "Priority"
},
"orderBy": "+assetnum"
},
"Work Orders": {
"select": "wonum,status,assetnum",
"groupByCountField": "status"
},
"ServiceRequests": {
"select": "ticketid,status,assetnum",
"groupByCountField": "status"
}
}
IBM Maximo Stream - Static Data
The static data JSON object is used to provide configuration and additional parameters that are passed through the
solution pipeline. This object controls how Maximo and Tandem interact, which properties are synchronized, and how work
order and service request information is handled.
How to Configure
The static data object consists of two main sections:
Maximo Configuration: Contains connection details for IBM Maximo, such as the base URL, site ID, and the property name used for asset numbers.
Tandem Configuration: Defines how asset data is mapped and updated in Autodesk Tandem. This includes:
- Classification: The category in Tandem where properties are stored (e.g.,
Maximo). - Maximo Asset Number Property: The property in Tandem that holds the Maximo asset number.
- Work Order Configuration (Optional):
Add Status Counts: Set totrueto enable status count synchronization.Status to Lookup: List of work order statuses to track (e.g.,In Progress,Waiting for Approval).Properties For Status Counts: Maps each status to a property name in Tandem.Add Work Order URL: Set totrueto include a direct URL to work orders for each asset.
- Service Request Configuration (Optional):
Add Status Counts: Set totrueto enable service request status counts.Status to Lookup: List of service request statuses to track.Properties For Status Counts: Maps each status to a property name in Tandem.Add Service Request URL: Set totrueto include a direct URL to service requests for each asset.
- Fixed Properties (Optional):
- Key-value pairs for static properties to be set on all assets (e.g., a
FlexFieldfor filtering or troubleshooting).
- Key-value pairs for static properties to be set on all assets (e.g., a
- Classification: The category in Tandem where properties are stored (e.g.,
How to Use
- Copy the
static dataJSON object from the Appendix. - Update the values for your environment (e.g., set the correct
baseurl,siteId, and any custom property names). - Paste the updated JSON into the
Static Dataparameter field when configuring the Maximo Stream plugin in the solution walkthrough. - Ensure that the properties and classifications referenced in the JSON exist in your Tandem facility template.
- The
Work Order ConfigurationandService Request Configurationsections are optional. If omitted, status counts and URLs will not be updated in Tandem. - The
Fixed Propertiessection is also optional and can be used for any static values you want to apply to all assets.
This configuration ensures that your solution will correctly synchronize asset data, work order and service request counts, and any static properties between Maximo and Tandem.
Static Data
{
"Maximo Configuration": {
"baseurl": "",
"siteId": "",
"Asset Number Property": "AssetNum"
},
"Tandem Configuration": {
"Classification": "Maximo",
"Maximo Asset Number Property": "Maximo.AssetNum",
"Work Order Configuration": {
"Add Status Counts": true,
"Status to Lookup": [
"In Progress",
"Waiting for Approval",
"Waiting for Material",
"Waiting for Planning",
"Waiting for Scheduling"
],
"Properties For Status Counts": {
"In Progress": "WOInProgress",
"Waiting for Approval": "WOWaitingApproval",
"Waiting for Material": "WOWaitingMaterial",
"Waiting for Planning": "WOWaitingPlanning",
"Waiting for Scheduling": "WOWaitingScheduling"
},
"Add Work Order URL": true
},
"Service Request Configuration": {
"Add Status Counts": true,
"Status to Lookup": [
"New",
"Queued",
"Pending",
"In Progress"
],
"Properties For Status Counts": {
"New": "SRNew",
"Queued": "SRQueued",
"Pending": "SRPending",
"In Progress": "SRInProgress"
},
"Add Service Request URL": true
},
"Fixed Properties": {
"FlexField": "ABC123"
}
}
}
