Tandem to Maximo - Add Asset URL
Description
The solution reads the assets from Tandem, generates an Asset URL for each asset in Tandem and adds it as attachment to the appropriate Maximo Asset.
Solution Features
| Feature | Description |
|---|---|
| Read Assets from Tandem | The solution starts off by reading all assets from Tandem. This is achieved by using the Attribute Filter and the Asset Filter features of the plugin. |
| Generate a WebSafe URL for each asset in Tandem | The solution generates an encrypted web safe url for the assets that are mapped to Maximo which are like a direct link to the asset from Maximo to Tandem. |
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, you can 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 Tandem asset properties to Maximo.
The below configuration is a default one provided in the Appendix section. The parameters below are assumed to be in a
category named Maximo. If you wish to use a different configuration, you can create a new category and configure them
accordingly.
| 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 |
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.
Scheduled Data Stream - Trigger
The scheduled data stream is the starting point in the integration which allows users to configure the user-defined property mapping between Tandem and Maximo applications. A pre-defined JSON is provided (in Appendix below) which can be copied and edited as per requirement. The mandatory parameters that need to be configured in the scheduled data stream are:
| Parameter Name | Description |
|---|---|
| maximoPropertiesCategory | The category name in Tandem where the properties are defined. |
| maximoAssetNumPropertyInTandem | The user defined property in Tandem which stores the Maximo AssetNum. |
Autodesk Tandem Service Plugin - Read Assets
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 your APS account setup | Yes |
| Client Secret | The client secret from your APS account setup | Yes |
| Facility URN | The URN of your Tandem facility | Yes |
| Data Processing | The type of data processing to perform | Yes, make sure its set to Retrieve Generic Assets |
IBM Maximo Service - Read Attachments
| 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 |
To identify the Maximo Base URL, you can use the URL you use to access Maximo in your browser. For example, if you access https://maximo.example.com/maximo, then the Maximo Base URL would be https://maximo.example.com. Or you can find the base URL in the Maximo API documentation. Alternatively, some Maximo installations may have a specific API endpoint, such as https://maximo.example.com/api which will be configured in the System Configuration > Platform Configuration > System Properties and filter for
mxe.oslc.restwebappurl.
HTTP Service — Add Attachment
| Parameter Name | Description |
|---|---|
| Authentication Method | The authentication method to be used for Maximo APIs. |
| Authentication Value | The authentication value for the method selected above. |
| Headers | The value for this headers is a JSON object which is provided in the Appendix Section. |
| Base URL | The base URL for the Maximo API's asset to which the url will be attached. Please note, the url format contains assetid which is retrieved from the incoming data of the previous plugin. So, do not change anything in the url except for the part which says <BASE_URL> URL Format: https://<BASE_URL>/maximo/api/os/mxapiasset/{data.assetid}/doclinks?lean=1 |
Detailed Solution Overview
This section details all components involved in the solution pipeline, including their configuration and purpose.

Scheduled Data Stream
The scheduled data stream is the start of the pipeline where we can configure a schedule to determine how frequently it should run and update the properties. The plugin provides a way to mention the client-specific properties from Maximo as a JSON object. The JSON object provided in the Appendix can be copied and edited as per the client configuration.
Autodesk Tandem Service
The Tandem service is configured to read assets from the Tandem Facility. The asset filter and the attribute filter are
sent as overrides from the convertor prior to this plugin. The plugin reads all assets under the Category configured in
the scheduled data stream and applies the filters to read only those assets that match the criteria. The tandem service
itself prepares the Asset URL for each asset in the Tandem facility.
IBM Maximo Service
The maximo service plugin takes the data received from the previous convertor plugin which contains the oslc.where
filter along with the oslc.select attributes to read the assets matching the filter and also load the attachments for
the assets.
Convertor
- Prep Tandem: The JavaScript code that prepares the
AssetsFilterandAttributeFilterfor the Tandem Service Plugin based on the configuration in the scheduled data stream. - Prep Maximo: Based on the data received from Tandem, this convertor prepares the
oslc.whereasset filter for the Maximo APIs. The key is theoslc.selectwhich contains the"assetid, assetnum, doclinks{*}",and theoslc.wherewhich is a dynamic value that is set using the list of asset numbers received from the Tandem service plugin. This filter is then sent to the Maximo service plugin to read the assets.
Check URI Exists
The convertor checks if the Asset URL generated by the Tandem service plugin already exists in the attachments that
are loaded for the asset in Maximo. If it does not exist. If the incoming Asset URL does not exist in the attachments,
the convertor creates HTTP POST body to add the attachment to the Maximo asset. The HTTP POST body is then sent to the
HTTP service plugin to add the attachment to the Maximo asset. Along with this the convertor also sends the assetid
for the HTTP service plugin to consume and prepare the URL.
HTTP Service
The generic HTTP service plugin that will connect to the Maximo service and sends the url generated as an attachment to the asset id. The asset id is passed in from the previous plugin, which is the one received from the Maximo service plugin.
Troubleshooting
If you encounter issues, check the following:
- Data Not Reading from Tandem
- Verify the attribute in
Asset Filtermatches the Maximo Asset number property in Tandem - Confirm the attribute exists in the facility template
- Check if assets use the correct Classification with the attribute
- 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
Scheduled Data Stream
{ "maximoPropertiesCategory": "Maximo", "maximoAssetNumPropertyInTandem": "AssetNum" }HTTP Service - Add Attachment (Headers)
{ "Accept": "application/json", "content-type": "application/json", "slug": "data.assetid", "content-location": "data.url", "x-document-meta": "URL/Attachments", "x-document-description": "Tandem hosted" }
