How can the Robust Transformer be forced to use the IRE while importing CIs?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-06-2025 11:38 PM
Dear all
We import CIs in various ways (due to our history). We use transform maps, the Integration Hub, and the Integration Hub ETL. Unfortunately, the IRE is only used by default with the Integration Hub ETL.
For transform maps, a script should be able to launch the IRE.
How can I use the IRE with an Integration Hub integration?
Thank you in advance for your feedback.
Best regards, Oliver
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-07-2025 05:28 PM
Hello @OliverTim
Thank you for your reply.
I'm sorry, but I don't know of any other method than running IRE again with a script.
In that case, it would be necessary to check each time, so I don't think that's the method you're looking for.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-07-2025 06:50 AM - edited 08-07-2025 06:51 AM
Hi @OliverTim ,
Integration Type | IRE Enabled by Default? | How to Invoke IRE |
IntegrationHub ETL | Yes | Auto-handled |
Transform Map | No | Use GlideIdentificationEngineScriptable() |
IntegrationHub Flow | No | Use IRECIUtils().createOrUpdateCI() |
Solution Overview as per my understanding -
While IntegrationHub ETL uses IRE automatically, other data import methods (e.g., Transform Maps, IntegrationHub custom Flows) do not invoke IRE unless done manually.
How to Use IRE in IntegrationHub (Non-ETL)
There are two main ways to invoke the IRE:
1. Using IRECIUtils.createOrUpdateCI() in a Script Step
Inside a Script step in your Flow or Action, use the IRECIUtils API.
Sample Script (inside a Script step):
var ciPayload = {
className: "cmdb_ci_server",
values: {
name: "myserver01",
ip_address: "192.168.1.100",
serial_number: "SN123456",
install_status: 1
}
};
var response = new IRECIUtils().createOrUpdateCI(ciPayload);
gs.info("IRE Response: " + JSON.stringify(response));
2. Use IdentificationEngineScriptable in Transform Map (Advanced)
If you're using a Transform Map or Scripted Flow Action, you can do:
var payload = {
className: 'cmdb_ci_server',
values: {
name: source.u_name,
ip_address: source.u_ip_address,
serial_number: source.u_serial_number
}
};
var engine = new GlideIdentificationEngineScriptable();
var result = engine.processCI(payload);
gs.info("CI processed via IRE. Sys ID: " + result);
Use this method inside the onBefore or onAfter script of a Transform Map or Script step in a Flow.
Important Notes
* The className must be the CMDB table name (like cmdb_ci_computer, cmdb_ci_server, etc.)
* The values object must include identification attributes as defined in the CI Identification Rules
* Ensure the CI Class has an active Identification Rule with properly defined Identifiers
The IRE will:
* Match using identifiers
* Update the record if matched
* Create a new CI if no match
Benefits of This Approach:
* Ensures consistency across CI data inputs
* Prevents duplicates
* Leverages identification and reconciliation rules
* Avoids bypassing the CMDB Data Manager
Please appreciate the efforts of community contributors by marking appropriate response as Mark my Answer Helpful or Accept Solution this may help other community users to follow correct solution in future.
Thank You
AJ - TechTrek with AJ - ITOM Trainer
LinkedIn:- https://www.linkedin.com/in/ajay-kumar-66a91385/
YouTube:- https://www.youtube.com/@learnitomwithaj
Topmate:- https://topmate.io/aj_techtrekwithaj (Connect for 1-1 Session)
ServiceNow Community MVP 2025
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-08-2025 01:13 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-25-2025 12:48 AM
Hi @AJ-TechTrek
Thanks a lot for your input. Unfortunately we do not use a flow. We use the plain integration Hub (https://instancename/now/integrationhub).
There I can not find any point, where to enter a script which is used for each record (record by record).
In the Robust Transforer ETL Definition I can only set a script for "Execute on before script" or "Execute on after script". Which I assume gets trigger before or after the whole import.
The "on before" trigger does not make sense because there is no data available nor the "on after" because the data is already in the CMDB.
Do you have any idea, how we may trigger the IRE?
Or probably it is not possible because the basic Integration Hub is not intended to do so.
Thanks in advance for your feedback.
Kind Regards
Oliver
PS: Here some screen shots.
Integertion Hub
Robust Transformer ETL Definition