testgrinder service will be discontinued on January 31, 2025
Often, organizations require a means of either loading or updating hundreds or thousands of records at a time. At such volume, doing it by hand is time consuming and prone to errors. Sometimes, an answer to this problem is manipulating the data directly in the Maximo database. However, such manipulation is not ideal, as it bypasses Maximo business logic and often results in data corruption that may not be immediately apparent.
Manipulating Maximo records via Maximo UI is the best way to make sure that data changes are properly validated and audited. Doing this by hand is costly and inefficient at scale. This is where testgrinder can help.
Let's take a look at an example. Let's say we need to create a number of assets with their related locations. The scenario may look like this:
Script: Load Locations with Assets
Scenario Outline: Create Asset <Asset> for Location <Location>
Given I login to Maximo as Administrator
Then I go to the Assets / Locations application
And I click the 'New Location' toolbar button
And I enter '<Location>' in the Location field
And I enter '<Description>' in the description field of the Location field
And I enter 'OPERATING' in the Type field
And I enter '<GL Account>' in the 'GL Account' field
Then I save the record
And I see the 'Electronic Signature Authentication' dialog
And I enter the password for the Administrator role in the 'Password' field
And I enter 'testgrinder test' in the 'Reason For Change' field
And I click the OK button
And I see the flash message 'Record has been saved'
Then I select action 'Associate Systems with Location'
And I click the 'New Row' button in the 'System' table
And I enter 'PRIMARY' in the System field
And I enter '<Parent>' in the Parent field
And I click the OK button
Then I go to the Assets / Assets application
And I click the 'New Asset' toolbar button
And I enter '<Asset>' in the Asset field
And I activate the detail menu for the Location field
And I click menu item 'Select Value'
And I enter '=<Location>' in the Location filter in the unlabelled table
And I initiate search in the unlabelled table
And I see 1 row in the unlabelled table
And I select the first row in the unlabelled table
And I see the value '<Location>' in the Location field
And I enter '<Serial>' in the 'Serial #' field
And I successfully save the record
And I logout
Examples:
| Location | Asset | Parent | Description | GL Account | Serial |
| FT26043 | A26043 | BOILER | Service Water | 6220-300-SAF | 123534234 |
| FE26054G | A26054G | BR300 | Potable Water | 6220-300-SAF | 134235-543 |
| FV26405A | A26405A | BR300 | UPW flow control | 6220-300-SAF | 56234234-65 |
| FT27036B | A27036B | BR400 | Chilled Water | 6220-300-SAF | |
| PT28037F | A28037F | BR400 | Condensate | 6220-300-SAF | Z0342121312 |
| LG28108A | A28108A | BR400 | Ammonia | 6220-300-SAF | LG45542344 |
Here, a scenario outline is used. This instructs testgrinder to execute the scenario steps once for each of the rows in the Examples table, effectively converting the outline into individual scenarios - one per example. Here there are 6 rows in the Examples table, but you may have hundreds, or even thousands. And the example lines are easily prepared with help of a spreadsheet.
Here's how the run report looks:
Each line of the Examples table resulted in a separate Scenario being executed, in parallel with others. Note that while each scenario took about 90 seconds to run, overall the data load took only 1 minute and 42 seconds.
Note that your data loading session is fully audit trailed. You can watch the video of loading each of the assets and if you expand the corresponding scenario, you may see screenshots for every step.