<?xml version="1.0"?>
<rss version="2.0"><channel><title>Articles</title><link>https://community.tibco.com/articles/</link><description/><language>en</language><item><title>AI Mapper in TIBCO BusinessWorks 6 : A Complete Guide</title><link>https://community.tibco.com/articles/37_tibco-platform/40_integration/53_businessworks/ai-mapper-in-tibco-businessworks-6-a-complete-guide-r3840/</link><description><![CDATA[<h4><u><span data-i-color="blue">What is the AI Mapper?</span></u></h4><p>When you build an integration in TIBCO BusinessWorks, you almost always need to connect two systems that use different field names for the same data. One system calls it firstName, another calls it givenName. One calls it city, another calls it municipality. One uses genderCode, another uses sex. Manually matching hundreds sometimes thousands of fields like this is slow, tedious, and error-prone.The <strong>AI Mapper </strong>introduced in <strong>6.12.0 Hotfix 3</strong> is a feature in BW6 Studio that does this matching automatically. You open the mapping editor, right-click on the target element and choose AI Map and the AI Mapper reads every field name on both sides - the source schema and the target schema - and proposes which source field should connect to which target field, ranked by confidence. You review the suggestions, accept the ones that are correct, reject the ones that aren't, and the mappings are written directly into your BW process as XPath/XSLT expressions, ready to deploy.What sets the AI Mapper apart from its predecessor, the <strong>legacy Smart Mapper</strong>, is that it genuinely understands meaning not just spelling. It knows that dob and birthDate refer to the same concept, that routingNumber and sortCode are the same thing in different countries. It does this through a two-stage AI pipeline that combines<strong> large-language-model embeddings </strong>with a local <strong>ONNX-based cross-encoder reranker,</strong> all running inside the Studio IDE with no external service dependency at scoring time beyond the initial embedding call.</p><p>This article covers everything - what it is, how it works step by step, how to set it up, how to get the most out of each operating mode, what the real-world accuracy looks like across various tested industry scenarios, and the technical architecture underneath for those who want to understand it.</p><p><span class="ipsEmoji" title="light bulb">💡</span> <strong><u><span data-i-color="red">Note</span></u></strong></p><p>AI Mapper- Online LLM(Tech Preview) support in BW 6.12.0 HF3 is currently in Tech preview mode. The functionality is intended for evaluation and demonstration purposes, and users should be aware that APIs or behavior may change in future releases.By using this Tech Preview, you acknowledge and agree that:</p><ul><li><p>It is provided "as is" with no warranties, express or implied.</p></li><li><p>It may not be deployed in production environments.</p></li><li><p>You are responsible for ensuring that any data processed complies with all applicable laws, regulations, and thirdparty rights.</p></li><li><p>Use of this software to analyze content or intellectual property of Cloud Software Group is strictly prohibited.</p></li></ul><p></p><h4><u><span data-i-color="blue">AI Mapper at a Glance</span></u></h4><p>The infographic below provides a high-level overview of the AI Mapper architecture, execution modes, recommendation workflow, learning capabilities, and overall mapping process described throughout this article. The subsequent sections explore each of these concepts in greater detail.</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17662" src="//media.invisioncic.com/s329579/monthly_2026_06/Gemini_Generated_Image_2fb3ns2fb3ns2fb3.thumb.png.33afe7bc3f6136ee8ded33cc6deea4c0.png" alt="Gemini_Generated_Image_2fb3ns2fb3ns2fb3.png" title="Gemini_Generated_Image_2fb3ns2fb3ns2fb3.png" width="1000" height="580" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/Gemini_Generated_Image_2fb3ns2fb3ns2fb3.png.e820271cae6ac33ebda3b0c3308efdfe.png" style="--i-media-width: 635px;" loading="lazy"></p><p></p><h4><u><span data-i-color="blue">Why It Matters: The Mapping Problem at Scale</span></u></h4><p>Schema mapping is one of the most underestimated costs in enterprise integration. A typical REST integration between an ERP and a fulfillment system might involve 150 fields on each side - even if 80% of those can be matched by exact name, the remaining 20% (30 fields) require domain knowledge to connect correctly. At 2–3 minutes per ambiguous field, that's an hour or more of skilled developer time on a single integration. Multiply across dozens of integrations in a large project and across an enterprise portfolio of hundreds, and the total cost is significant.</p><p>Beyond time, manual mapping is fragile. A developer who doesn't know banking terminology might not know that SWIFT and BIC are the same identifier. A developer unfamiliar with US healthcare abbreviations might not connect SSN to socialSecurityNumber. These gaps create silent data errors that surface only at runtime often in production.</p><p>The AI Mapper addresses this directly by:</p><ul><li><p><strong>Reducing time-to-mapping</strong> - a schema with 200 target fields that would take a developer 3–4 hours to map manually can be auto-mapped in under a minute, with 60–90% of mappings correct on first pass</p></li><li><p><strong>Encoding domain knowledge</strong> - the OpenAI embedding model has been trained on a vast corpus that includes financial, healthcare, retail, HR, and IoT terminology; it knows SWIFT = BIC, SSN = socialSecurityNumber</p></li><li><p><strong>Handling naming convention differences </strong>- camelCase, snake_case, PascalCase, abbreviations, unit suffixes, and acronyms are all normalized before comparison</p></li><li><p><strong>Learning from your corrections</strong> - every mapping you confirm or correct is stored and used to improve future auto-mapping runs, both within your session and (optionally) shared across your team</p></li></ul><p></p><h4><u><span data-i-color="blue">From Smart Mapper to AI Mapper : A Brief History</span></u></h4><p>The predecessor to the AI Mapper is the <strong>Smart Mapper</strong>, which has been part of BW6 Studio for several releases. The Smart Mapper uses weighted heuristics: it splits field names by camelCase and underscore boundaries, looks up each word in a bundled precomputed GloVe-style word-vector dictionary &amp; computes cosine similarity between source and target vectors and blends te score in final mapping. This approach works well for common English words and conventional naming. For e.g orderDate → placedAt succeeds because the vectors for "order date" and "placed at" are reasonably close.</p><p>What the legacy Smart Mapper cannot do is resolve synonyms that require domain context or training beyond a general word-vector corpus. It lacks in things like physics-domain synonyms or the financial acronym equivalencies that require financial-domain training data. For example socialSecurityNumber → ssn fails because the conceptual link between "social Security Number" and "ssn" is a domain interpretation not a lexical similarity.</p><p>In BW 6.12.0 HF3, the Smart Mapper was extended with the AI Mapper, which wraps the legacy engine with a two-stage AI pipeline:</p><ol><li><p><strong>Remote embedding via OpenAI's API </strong>- field descriptions are sent to OpenAI's text-embedding-3-small model (or another configured model), which converts them into high-dimensional semantic vectors. Fields with the same meaning even if they look nothing alike get similar vectors.</p></li><li><p><strong>Local ONNX cross-encoder reranking</strong> - for the top-5 cosine candidates per target field, a local quantized model (ms-marco-MiniLM-L-6-v2, 23 MB) jointly reads both field descriptions together and produces a precise relevance score. This runs entirely on your machine; no data leaves after the embedding call.</p></li></ol><p>Three significant changes accompany this architecture:</p><ul><li><p><strong>On-premises inference</strong>: ONNX scoring happens locally with no latency cost beyond the initial model download</p></li><li><p><strong>Dual-mode operation:</strong> "online" mode calls OpenAI for embeddings and uses ONNX for reranking; "offline" mode falls back to the legacy word-vector engine (no API call, air-gap compatible)</p></li><li><p><strong>Persistence layer</strong>: an embedded Apache Derby database (or optional remote database) accumulates user-confirmed mappings as a recommendation store, enabling reinforcement learning across sessions and teams</p></li></ul><p></p><h4><u><span data-i-color="blue">How It Works: The Four-Step Pipeline</span></u></h4><p>Here is what the AI Mapper does when you trigger AI Map in online mode</p><p><strong><u>Step 1 - Read and Parse Every Field Name</u></strong></p><p>The AI Mapper reads every field in your source schema and every field in your target schema. It doesn't just read the raw name - it tokenizes it. streetLine1 becomes {street, line, 1}. legalFirstName becomes {legal, first, name}. dateOfBirth becomes {date, of, birth}. It handles camelCase splits, acronym splits , underscore separators, and alpha-to-numeric boundaries - all automatically.</p><p>For each field, it also reads the parent path (so it knows whether a field called name is inside shippingAddress or billingAddress), the data type (string, decimal, boolean, etc.), and whether the field repeats (array vs single value). All of this becomes the field's "description."</p><p><strong><u>Step 2 - Turn Descriptions into Meaning</u></strong></p><p>Each field description is sent to an AI language model - <strong>OpenAI's embedding API </strong>by default - that converts it into a list of hundreds of numbers called an embedding. Think of it like a GPS coordinate system for meaning: fields that mean the same thing end up close together on this meaning-map, even if the words are completely different. dateOfBirth and birth_date land in almost exactly the same spot. routingNumber and sortCode land close together because the model has been trained on text that uses both terms for the same banking concept.</p><p>This happens for every source field and every target field, using the full description (name + path + type + cardinality), not just the bare name.</p><p><strong><u>Step 3 - Find the Best Match and Double-Check It</u></strong></p><p>For each target field, the system performs a fast nearest-neighbor search in the meaning space to find the <strong>top-5 </strong>source fields whose meaning-coordinates are closest (cosine similarity). This is fast but coarse - it might return five plausible candidates without knowing which one is truly best.</p><p>The top-5 candidates then go through a second, more <strong>precise</strong> AI model: a <strong>23 MB</strong> cross-encoder model (<strong>ms-marco-MiniLM-L-6-v2</strong>) running locally on your machine using <strong>ONNX Runtime</strong>. This model reads both field descriptions together - the target description and each candidate source description as a pair and produces a relevance score for each. Unlike the embedding model, which scores each field in isolation, the cross-encoder understands the full context of both sides simultaneously, like a human expert comparing the two. The highest-scoring candidate is selected as the proposed mapping.</p><p><strong><u>Step 4 - Apply Mappings and Show Suggestions</u></strong></p><p>The proposed mappings are written into the Studio mapper as XPath/XSLT expressions. For repeating fields (arrays or lists), the AI Mapper automatically wraps the mapping in an xsl:for-each loop - you don't have to configure this manually.</p><p>The top-3 candidates with confidence percentages are also stored per field and are accessible via right-click → <strong>"Recommended Mappings"</strong> dialog. This lets you review close calls and substitute the second or third choice if the AI's first choice was wrong. When you do this, the system records your correction.</p><h4><u><span data-i-color="blue">Three Modes of Operation</span></u></h4><p>The AI Mapper operates in three distinct modes, selected through Window → Preferences → BusinessWorks → Mapper → AI Mapper.</p><p><strong><u>Mode 1: AI Online (Tech Preview)</u></strong></p><p>What it does: Calls OpenAI to embed all source and target field descriptions, runs ONNX cross-encoder reranking locally, applies user-override scoring from the learning database.</p><p><strong>Best for</strong>: Complex schemas with hard synonyms, domain-specific terminology, heavy use of abbreviations, cross-industry vocabulary mapping (e.g., US banking to UK banking terms, EMR to registration portal field names, physics units to full scientific names).</p><p><strong>Requires</strong>: OpenAI API key configured in BusinessWorks AI preferences; ONNX model files downloaded (automatic on first use, or manual pre-download for air-gapped environments); internet connectivity for the embedding call.</p><p><strong>Trade-off:</strong> Field names are sent to OpenAI's API - a data-governance consideration. Only field names, paths, types, and cardinalities are sent; no actual data values.</p><p><strong><u>Mode 2: AI Offline (Local)</u></strong></p><p>What it does: Uses the same legacy word-vector scoring algorithm as the Smart Mapper but with the streamlined AI Mapper UI - no parameter wizard, full-schema depth , learning always on.</p><p><strong>Best for</strong>: Air-gapped environments; integrations where field names follow simple conventions (camelCase, snake_case, direct abbreviations); cases where OpenAI access is not available or not approved.</p><p><strong>Requires: </strong>No external services. The precomputed GloVe-style word-vector dictionary is bundled with the product.</p><p><strong>Limitation: </strong>Cannot resolve hard domain synonyms (socialSecurity→ ssn). These require semantic understanding that goes beyond word-vector cosine similarity.</p><p><strong>Important clarification:</strong> AI Offline mode uses the same scoring algorithm as Legacy Smart Mapper. What differs is the wrapper: no parameter wizard, default depth (vs. user-chosen depth), and learning always active. If you need smarter matching, you need Online mode.</p><p><strong><u>Mode 3: Legacy Smart Mapper</u></strong></p><p>What it does: The original Smart Mapper with full parameter exposure - depth sliders, weight tuning, explicit enable/disable.</p><p><strong>Best for</strong>: Teams who need precise control over matching parameters; scenarios where the simpler algorithm is preferred for auditability.</p><p><strong>JVM flag:</strong> -<a rel="external nofollow" href="https://Dcom.tibco.bw">Dcom.tibco.bw</a>.mapper.useLegacySmartMapper=<strong>true</strong> - bypasses the AI Mapper infrastructure entirely. This is configured in TIBCOBusinessStudio.ini file under vmargs</p><p></p><p><strong><u>Mode comparison table:</u></strong></p><p></p><div class="ipsRichText__table-wrapper"><table style="width: 857px;"><colgroup><col style="width:155px;"><col style="width:315px;"><col style="width:180px;"><col style="width:207px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Aspect</p></th><th colspan="1" rowspan="1"><p>AI Online</p></th><th colspan="1" rowspan="1"><p>AI Offline</p></th><th colspan="1" rowspan="1"><p>Legacy Smart Mapper</p></th></tr><tr><td colspan="1" rowspan="1"><p>Embedding source</p></td><td colspan="1" rowspan="1"><p>OpenAI remote API</p></td><td colspan="1" rowspan="1"><p>GloVe local word vectors</p></td><td colspan="1" rowspan="1"><p>GloVe local word vectors</p></td></tr><tr><td colspan="1" rowspan="1"><p>Cross-encoder</p></td><td colspan="1" rowspan="1"><p>Local ONNX (ms-marco-MiniLM-L-6-v2)</p></td><td colspan="1" rowspan="1"><p>None</p></td><td colspan="1" rowspan="1"><p>None</p></td></tr><tr><td colspan="1" rowspan="1"><p>Hard synonyms</p></td><td colspan="1" rowspan="1"><p>Yes (domain-aware)</p></td><td colspan="1" rowspan="1"><p>No</p></td><td colspan="1" rowspan="1"><p>No</p></td></tr><tr><td colspan="1" rowspan="1"><p>Internet required</p></td><td colspan="1" rowspan="1"><p>Yes (embedding call only)</p></td><td colspan="1" rowspan="1"><p>No</p></td><td colspan="1" rowspan="1"><p>No</p></td></tr><tr><td colspan="1" rowspan="1"><p>Data sent externally</p></td><td colspan="1" rowspan="1"><p>Field names, paths, types</p></td><td colspan="1" rowspan="1"><p>Nothing</p></td><td colspan="1" rowspan="1"><p>Nothing</p></td></tr><tr><td colspan="1" rowspan="1"><p>Parameter wizard</p></td><td colspan="1" rowspan="1"><p>Skipped (one-click)</p></td><td colspan="1" rowspan="1"><p>Skipped (one-click)</p></td><td colspan="1" rowspan="1"><p>Shown (sliders + tabs)</p></td></tr><tr><td colspan="1" rowspan="1"><p>Learning always on</p></td><td colspan="1" rowspan="1"><p>Yes</p></td><td colspan="1" rowspan="1"><p>Yes</p></td><td colspan="1" rowspan="1"><p>Optional (checkbox)</p></td></tr><tr><td colspan="1" rowspan="1"><p>Progress UI</p></td><td colspan="1" rowspan="1"><p>Background thread + progress bar</p></td><td colspan="1" rowspan="1"><p>Standard dialog</p></td><td colspan="1" rowspan="1"><p>Standard dialog</p></td></tr></tbody></table></div><p></p><h4><u><span data-i-color="blue">The Learning Loop : Getting Smarter Over Time</span></u></h4><p>One of the most powerful features of the AI Mapper is its persistent learning system. Every time you confirm a mapping either by accepting a suggested one or by manually drawing a connection the AI Mapper records the pairing and uses it to boost that same pairing in future runs.</p><p><strong><u>How the Recording Works</u></strong></p><p>When you accept a mapping from the Recommended Mappings dialog or manually create a mapping in the editor, the AI mapper</p><ul><li><p>Stores the pairing in memory as "targetFieldName targetTypeName" → "sourceFieldName sourceTypeName"</p></li><li><p>Persists it to the database immediately (Apache Derby embedded by default, or a remote database for team-wide sharing)</p></li></ul><p>The key is deliberate schema-agnostic aspect where it stores only the field name and type, not the full schema path. This means a confirmed pairing( for e.g managerId → reportsTo) applies as a recommendation boost for any future mapping activity that contains a field called managerId targeting a field called reportsTo, regardless of the surrounding schema structure.</p><p><strong><u>How the Boost Works at Runtime</u></strong></p><p>On the next auto-map run, AI mapper reads all confirmed pairings from the database. In AI Online mode, if a confirmed pairing is found for the current target, the override source is used. The override source always wins, but the AI's top-3 candidates remain visible in the recommended mappings dialog , so you can still see what the AI would have chosen and switch if the context is different.</p><p><strong><u>Local Derby vs Shared Database</u></strong></p><p>By default, confirmed pairings are stored in an embedded Apache Derby database inside the Studio workspace. This means your learning accumulates locally across your Studio sessions.</p><p>For team-wide sharing where one developer's corrections become everyone's recommendations you can enable "Use a remote database for shared mapping recommendations" in AI Mapper preferences and configure a DB connection. Once enabled, all confirmed pairings from all developers go to the shared database, and all developers benefit from each other's corrections on the next auto-map run.</p><p>To reset learning and start fresh, right-click in the mapper editor and choose "Reset to Default Recommended Mappings". This clears both the in-memory cache and the database.</p><h4><u><span data-i-color="blue">Setup and Configuration</span></u></h4><p></p><p><strong><u>Prerequisites</u></strong></p><ul><li><p>BW 6.12.0 HF3 or later</p></li><li><p>OpenAI API key (for AI Online mode only)</p></li><li><p>ONNX model files — downloaded automatically on first use, or manually for air-gapped environments</p></li></ul><p></p><p><strong><u>Step-by-Step Setup for AI Online Mode</u></strong></p><p><strong>Step 1</strong> : Enable BW6 Design Assistant(Tech Preview). Go to Window → Preferences → BusinessWorks AI &amp; check the option as shown below</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17651" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.561073ef9d53823878d9ed85767c22f5.png" alt="image.png" title="image.png" width="919" height="750" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.e873b8cdbaace65e9d313d58289e18c4.png" style="--i-media-width: 515px;" loading="lazy"></p><p><br>Click Apply and Close. You will be presented with below dialog</p><p><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17652" src="//media.invisioncic.com/s329579/monthly_2026_06/image.png.bed08d286d435a6a1f6121e6d2d43fee.png" alt="image.png" title="image.png" width="988" height="382" style="--i-media-width: 447px;" loading="lazy"><br></p><p>Click OK.</p><p><strong>Step 2 :</strong> Configure OpenAI key. Go to Window → Preferences → BusinessWorks AI → AI Mapper Models. Add a model using your OpenAI <strong>API key</strong>. Select an embedding model (e.g., <strong>text-embedding-3-small</strong>).</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17653" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.8a884afa9fa0ad18725c74ce654c5f28.png" alt="image.png" title="image.png" width="928" height="750" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.886ea36bf37ed6262d82f7034320057e.png" style="--i-media-width: 658px;" loading="lazy"></p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17654" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.fc335508757ef8ada092361b961e4918.png" alt="image.png" title="image.png" width="928" height="750" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.24ec56caf54712d47a57a6f791867f39.png" style="--i-media-width: 668px;" loading="lazy"></p><p><br>Click Apply and Close.</p><p><strong>Step 3:</strong> Enable AI <strong>Online</strong> Mode. Go to Window → Preferences → Mapper → AI Mapper → Mapping Engine</p><ul><li><p>Enable AI Mapper: <strong>Online LLM (Tech Preview)</strong>. Default is Local</p></li><li><p>Embedding model: Select the model you configured in Step 2</p><p></p></li></ul><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17655" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.641c14947d3392bb3c4b6d4078e7cb95.png" alt="image.png" title="image.png" width="1000" height="671" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.8a8e39c7785fce3d6e487f9ef9416272.png" style="--i-media-width: 687px;" loading="lazy"></p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17656" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.b62b61035f9bb20b22951f439892f917.png" alt="image.png" title="image.png" width="1000" height="695" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.e4cd8d240362a2cabd5a2af96f9c4db6.png" style="--i-media-width: 706px;" loading="lazy"></p><p></p><p><strong>Step 4 : </strong>Configure ONNX assets</p><p>Still in Preferences → Mapper → AI Mapper, under <strong>"Reranker models location" </strong>You have two options:</p><ul><li><p>Download mode (recommended): AI Mapper will automatically download <strong>model_quantized.onnx </strong>and <strong>tokenizer.json</strong> from <strong>HuggingFace</strong> on first use. Specify a download folder, or leave blank to use the user home default directory.</p></li><li><p>Existing assets mode: if you have pre-downloaded the files (for air-gapped environments or corporate proxy restrictions), point to the folder containing both files.</p></li></ul><p>The download is idempotent.If the files already exist and are non-empty, no re-download occurs.</p><p><strong>Step 5 </strong>: Configure the recommendation database (optional)</p><p>For team-wide learning, enable "<strong>Use a remote database for shared mapping recommendations</strong>" and configure your DB connection details. Otherwise, leave this at the default (local Derby).</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17657" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.0a62298f11d93cdacd60130032ce871f.png" alt="image.png" title="image.png" width="1000" height="750" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.b3e9f15ea49f50b4e03fa84eaa1339ba.png" style="--i-media-width: 703px;" loading="lazy"></p><p></p><p><strong>Step 6 : </strong>Test with a simple process</p><p>Create or open a BW process with 2 mapper activity with 2 different schemas. In the mapping editor, drag Source tree to target tree on a target element and select "AI Map." You should see the progress dialog appear (first indeterminate, then switching to "Mapping N of M nodes..." once the target embedding is complete). On first run, the ONNX model is downloaded in the background.</p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17658" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.6bd26e10afc38317f7f4b293bb92bc59.png" alt="image.png" title="image.png" width="1000" height="126" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.125bfa992ca390cbcfa0a0b0f7cc4a81.png" style="--i-media-width: 597px;" loading="lazy"></p><p></p><h4><u><span data-i-color="blue">Demo Scenarios : Seeing It In Action</span></u></h4><p>The sample project included here <a class="ipsAttachLink" data-fileid="17660" data-fileext="zip" data-extension="zip" href="https://community.tibco.com/applications/core/interface/file/attachment.php?id=17660&amp;key=f37ead3071e759a19c351a9c103b8da4" rel="">AIMapperOnlineSample.zip</a> showcases demo scenarios covering a range of industries and mapping challenges. Each scenario is a BW process with two Mapper activities(Source &amp; Target) whose schemas are ready to try. The mapper activities are preconfigured with the schema pairs used in each scenario, but no mappings have been implemented yet. This allows you to execute the AI Map Drop Wizard and observe how different options generate mappings &amp; recommendations .</p><p>The screenshots below shows the imported project in Business Studio, where the process names correspond directly to the Smart Mapper options being demonstrated.</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17631" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.68c60bd705ea9b9acd12dbaab156b78c.png" alt="image.png" title="image.png" width="712" height="750" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.a465118fc33f7f74e8acc34f1b5e7800.png" style="--i-media-width: 463px;" loading="lazy"></p><p></p><p><strong>NOTE: </strong>After importing the project, design-time validation errors may appear in Studio.These errors are expected and can be safely ignored, because the mapper activities intentionally do not contain mappings yet. The scenarios are designed specifically to demonstrate how each AI Mapper option generates mappings during the scenarios described later in this article.</p><p></p><p><strong><u>How to Use the Demo Project</u></strong></p><p>1. Import the archive into BW6 Studio (File → Import → General → File System)</p><p>2. Open any process to see the paired mapper activities with corresponding schemas</p><p>3. Select the Target mapper activity and open its input configuration in the properties panel.</p><p>4. In the Data Source panel, locate the root data element (for example, the source schema root). Drag the source root element and drop it onto the corresponding target element root in the mapping panel.</p><p>5. Choose AI Map option and click Finish. You should see the progress dialog appear (first indeterminate, then switching to "Mapping N of M nodes..." ). Wait for completion.</p><p>6. To see recommendations, right-click any mapped target element → Recommended Mappings</p><p>Below is a walkthrough of each scenario, including what capabilities it exercises and observed real-world results.</p><p></p><h5><u><span data-i-color="blue">Scenario 1 : IoT Sensor Telemetry</span></u></h5><p><strong><span data-i-color="indigo">Source</span></strong>: An IoT gateway emits SensorReading with abbreviated field names.</p><p><strong><span data-i-color="indigo">Target</span></strong>: An analytics platform consumes Measurement with full scientific names.</p><p><strong><span data-i-color="indigo">Description</span></strong>: A sensor device sends readings with heavily abbreviated field names (ts, tempC, humPct, co2Ppm, lux). An analytics platform expects full scientific names (recordedAt, temperature, humidity, carbonDioxide, illuminance)</p><p>Here is how Source &amp; Target schemas look:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17632" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.ab6449b238ba532c606e671ca69342b6.png" alt="image.png" title="image.png" width="829" height="750" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.ab752ae619bb69fd7cdbb0e54b5c617f.png" style="--i-media-width: 628px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Result:</span></u></strong></p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17633" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.78ee43162ee5b25e24164e87d598f1ec.png" alt="image.png" title="image.png" width="1000" height="758" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.bf05abca10de261b338271bde385bc67.png" style="--i-media-width: 625px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Key mappings to observe</span></u></strong></p><p></p><div class="ipsRichText__table-wrapper"><table style="width: 424px;"><colgroup><col style="width:220px;"><col style="width:204px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Source</p></th><th colspan="1" rowspan="1"><p>Target</p></th></tr><tr><td colspan="1" rowspan="1"><p>deviceId</p></td><td colspan="1" rowspan="1"><p>sensorIdentifier</p></td></tr><tr><td colspan="1" rowspan="1"><p>ts</p></td><td colspan="1" rowspan="1"><p>recordedAt</p></td></tr><tr><td colspan="1" rowspan="1"><p>tempC</p></td><td colspan="1" rowspan="1"><p>temperature</p></td></tr><tr><td colspan="1" rowspan="1"><p>humPct</p></td><td colspan="1" rowspan="1"><p>humidity</p></td></tr><tr><td colspan="1" rowspan="1"><p>co2Ppm</p></td><td colspan="1" rowspan="1"><p>carbonDioxide</p></td></tr><tr><td colspan="1" rowspan="1"><p>pm25</p></td><td colspan="1" rowspan="1"><p>particulateMatter25</p></td></tr><tr><td colspan="1" rowspan="1"><p>pm10</p></td><td colspan="1" rowspan="1"><p>particulateMatter10</p></td></tr><tr><td colspan="1" rowspan="1"><p>vocIdx</p></td><td colspan="1" rowspan="1"><p>vocIndex</p></td></tr><tr><td colspan="1" rowspan="1"><p>batteryPct</p></td><td colspan="1" rowspan="1"><p>batteryLevel</p></td></tr><tr><td colspan="1" rowspan="1"><p>signalDbm</p></td><td colspan="1" rowspan="1"><p>signalStrength</p></td></tr><tr><td colspan="1" rowspan="1"><p>accuracyM</p></td><td colspan="1" rowspan="1"><p>accuracy</p></td></tr><tr><td colspan="1" rowspan="1"><p>uptimeSec</p></td><td colspan="1" rowspan="1"><p>uptimeSeconds</p></td></tr><tr><td colspan="1" rowspan="1"><p>errorCode</p></td><td colspan="1" rowspan="1"><p>faultCode</p></td></tr><tr><td colspan="1" rowspan="1"><p>resetCount</p></td><td colspan="1" rowspan="1"><p>rebootCount</p></td></tr></tbody></table></div><p></p><p><strong><u><span data-i-color="indigo">Comparision with Pre-HF 3 legacy SmartMapper</span></u></strong></p><p>This IoT Sensor Telemetry scenario is the sharpest possible illustration of what the AI Mapper actually delivers because it is precisely the kind of schema where the pre-HF3 Smart Mapper fails catastrophically(with default tuning params), not just partially as seen below.While Smart Mapper can sometimes be improved through multiple iterations of parameter tuning, threshold adjustments, and manual refinement, achieving acceptable results often requires significant trial and error. In contrast, the AI Mapper(Online) is able to identify these semantic relationships with minimal or no tuning.</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17634" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.527cb118843a0f1c3e9049d84bf68162.png" alt="image.png" title="image.png" width="1000" height="730" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.a756d23ed3df8ccd097aeb259d168255.png" style="--i-media-width: 641px;" loading="lazy"></p><p></p><p></p><h5><u><span data-i-color="blue">Scenario 2 : Healthcare Patient Record</span></u></h5><p><strong><span data-i-color="indigo">Source</span></strong>: A hospital EMR exports PatientRecord in camelCase.</p><p><strong><span data-i-color="indigo">Target</span></strong>: A registration portal consumes RegistrationForm in snake_case with clinical abbreviations.</p><p><strong><span data-i-color="indigo">Description</span></strong>: A hospital EMR exports patient data in camelCase (dateOfBirth, genderCode, socialSecurityNumber). The registration portal uses snake_case (birth_date, sex, ssn). The genderCode → sex mapping is the hardest one here - the words look completely different but mean the same thing.</p><p>Here is how Source &amp; Target schemas look:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17635" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.6ce394a671a5c093b0fdbc0a18e968b5.png" alt="image.png" title="image.png" width="1000" height="479" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.98e4ca893ed0fd0f74a014e8879b68e3.png" style="--i-media-width: 665px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Result</span></u></strong>:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17637" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.9267a0a670065e1cd5e07bc2372dd4e2.png" alt="image.png" title="image.png" width="1000" height="565" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.8f8955ba7e77f6b65e1ec65cef560f0d.png" style="--i-media-width: 714px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Key mappings to observe</span></u></strong></p><p></p><div class="ipsRichText__table-wrapper"><table style="min-width: 40px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Source</p></th><th colspan="1" rowspan="1"><p>Target</p></th></tr><tr><td colspan="1" rowspan="1"><p>patientId</p></td><td colspan="1" rowspan="1"><p>patient_id</p></td></tr><tr><td colspan="1" rowspan="1"><p>personalInfo/dateOfBirth</p></td><td colspan="1" rowspan="1"><p>demographics/birth_date</p></td></tr><tr><td colspan="1" rowspan="1"><p>personalInfo/genderCode</p></td><td colspan="1" rowspan="1"><p>demographics/sex</p></td></tr><tr><td colspan="1" rowspan="1"><p>personalInfo/socialSecurityNumber</p></td><td colspan="1" rowspan="1"><p>demographics/ssn</p></td></tr><tr><td colspan="1" rowspan="1"><p>personalInfo/maritalStatus</p></td><td colspan="1" rowspan="1"><p>demographics/marital_status</p></td></tr><tr><td colspan="1" rowspan="1"><p>contactDetails/mobilePhone</p></td><td colspan="1" rowspan="1"><p>communications/cell</p></td></tr><tr><td colspan="1" rowspan="1"><p>contactDetails/emailAddress</p></td><td colspan="1" rowspan="1"><p>communications/email</p></td></tr><tr><td colspan="1" rowspan="1"><p>contactDetails/preferredContact</p></td><td colspan="1" rowspan="1"><p>communications/contact_preference</p></td></tr><tr><td colspan="1" rowspan="1"><p>insuranceInfo/memberId</p></td><td colspan="1" rowspan="1"><p>coverage/insurance_id</p></td></tr><tr><td colspan="1" rowspan="1"><p>insuranceInfo/groupNumber</p></td><td colspan="1" rowspan="1"><p>coverage/group_no</p></td></tr><tr><td colspan="1" rowspan="1"><p>insuranceInfo/effectiveDate</p></td><td colspan="1" rowspan="1"><p>coverage/coverage_start</p></td></tr><tr><td colspan="1" rowspan="1"><p>insuranceInfo/terminationDate</p></td><td colspan="1" rowspan="1"><p>coverage/coverage_end</p></td></tr><tr><td colspan="1" rowspan="1"><p>insuranceInfo/copayAmount</p></td><td colspan="1" rowspan="1"><p>coverage/copay</p></td></tr></tbody></table></div><p></p><p>The only single error was a phone number source swap between the patient's own phone and the emergency contact's phone both named phone with similar contexts.</p><p></p><p><strong><u><span data-i-color="indigo">Learning Override Step</span></u></strong></p><p>Manually correct next_of_kin/phone → emergencyContactDetails/PhoneNumber using Right Click -&gt; Recommended mappings dialog and choosing the second option.</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17638" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.b038947a4e5edf623bce4c59d302f7ab.png" alt="image.png" title="image.png" width="1000" height="565" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.23dc65b2f7c942db20b7bf213ce97c2c.png" style="--i-media-width: 784px;" loading="lazy"></p><p></p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17639" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.9159e6341b27dfacc7454e28c2d66e08.png" alt="image.png" title="image.png" width="1000" height="565" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.f7935b03e9fb765686d34f127bc17254.png" style="--i-media-width: 794px;" loading="lazy"></p><p></p><p>On the next auto-map for any other activity in the same Studio session, the user-confirmed pairing gets weightage. You can delete the mapping and redo it using AI Map again &amp; confirm</p><p></p><h5><u><span data-i-color="blue">Scenario 3 : E-Commerce Order Processing</span></u></h5><p><strong><span data-i-color="indigo">Source</span>:</strong> A retail OMS</p><p><strong><span data-i-color="indigo">Target</span>: </strong>A warehouse fulfillment system expecting FulfillmentOrder.</p><p><strong><span data-i-color="indigo">Description</span>:</strong> An order management system sends an order, and a warehouse fulfillment system receives it. The fields represent the same business data but use different terminology, such as firstName vs givenName, city vs municipality, and quantity vs qty. Order lines are represented as a repeating list.</p><p>Here is how Source &amp; Target schemas look:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17640" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.d68699c62b00d47870a8a5367ebfad99.png" alt="image.png" title="image.png" width="1000" height="600" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.c421550d0c68a9d8e400a02c708f9fe0.png" style="--i-media-width: 773px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Result</span></u></strong>:</p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17641" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.018690989ddab4cc86a5600e5854ff89.png" alt="image.png" title="image.png" width="1000" height="600" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.991d83830fb9e0c7b35aeb921056c1b6.png" style="--i-media-width: 760px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Key mappings to observe</span></u></strong></p><p></p><div class="ipsRichText__table-wrapper"><table style="min-width: 40px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Source</p></th><th colspan="1" rowspan="1"><p>Target</p></th></tr><tr><td colspan="1" rowspan="1"><p>orderId</p></td><td colspan="1" rowspan="1"><p>referenceNumber</p></td></tr><tr><td colspan="1" rowspan="1"><p>orderDate</p></td><td colspan="1" rowspan="1"><p>placedAt</p></td></tr><tr><td colspan="1" rowspan="1"><p>customerId</p></td><td colspan="1" rowspan="1"><p>buyerId</p></td></tr><tr><td colspan="1" rowspan="1"><p>firstName</p></td><td colspan="1" rowspan="1"><p>givenName</p></td></tr><tr><td colspan="1" rowspan="1"><p>emailAddress</p></td><td colspan="1" rowspan="1"><p>email</p></td></tr><tr><td colspan="1" rowspan="1"><p>phoneNumber</p></td><td colspan="1" rowspan="1"><p>contactPhone</p></td></tr><tr><td colspan="1" rowspan="1"><p>streetLine1</p></td><td colspan="1" rowspan="1"><p>addressLine1</p></td></tr><tr><td colspan="1" rowspan="1"><p>city</p></td><td colspan="1" rowspan="1"><p>municipality</p></td></tr><tr><td colspan="1" rowspan="1"><p>postalCode</p></td><td colspan="1" rowspan="1"><p>zipCode</p></td></tr><tr><td colspan="1" rowspan="1"><p>countryCode</p></td><td colspan="1" rowspan="1"><p>country</p></td></tr><tr><td colspan="1" rowspan="1"><p>lineItems/lineItem[*]</p></td><td colspan="1" rowspan="1"><p>items/item[*]</p></td></tr><tr><td colspan="1" rowspan="1"><p>productName</p></td><td colspan="1" rowspan="1"><p>description</p></td></tr><tr><td colspan="1" rowspan="1"><p>quantity</p></td><td colspan="1" rowspan="1"><p>qty</p></td></tr><tr><td colspan="1" rowspan="1"><p>unitPrice</p></td><td colspan="1" rowspan="1"><p>price</p></td></tr><tr><td colspan="1" rowspan="1"><p>discountPercent</p></td><td colspan="1" rowspan="1"><p>discount</p></td></tr><tr><td colspan="1" rowspan="1"><p>promotionCode</p></td><td colspan="1" rowspan="1"><p>discountCode</p></td></tr></tbody></table></div><p></p><p></p><h5><u><span data-i-color="blue">Scenario 4 : Type-Aware Matching</span></u></h5><p><strong><u><span data-i-color="indigo">Source</span></u>:</strong> A generic business record produced by an upstream application.</p><p><strong><u><span data-i-color="indigo">Target</span></u>:</strong> A target entry structure consumed by a downstream system.</p><p><strong><u><span data-i-color="indigo">Description</span></u>:</strong> A Record source with mixed types mapping to an Entry target with different type assignments.Both schemas contain fields with similar names, but not all fields represent the same type of data.</p><p>Here is how Source &amp; Target schemas look:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17642" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.57c927ed73b4ece11a58590c46f5e9b4.png" alt="image.png" title="image.png" width="1000" height="741" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.4baeefd57c4ba7057861afaa43eaf94f.png" style="--i-media-width: 572px;" loading="lazy"></p><p></p><p></p><p><strong><u><span data-i-color="indigo">Result</span></u></strong>:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17643" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.747ce81a6f2716f21096e5ebf6d4bada.png" alt="image.png" title="image.png" width="1000" height="741" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.43fbc95054855a8181029bd36674553b.png" style="--i-media-width: 575px;" loading="lazy"></p><p><strong><u><span data-i-color="indigo">Key mappings to observe</span></u></strong></p><p></p><div class="ipsRichText__table-wrapper"><table style="min-width: 40px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Source</p></th><th colspan="1" rowspan="1"><p>Target</p></th></tr><tr><td colspan="1" rowspan="1"><p>amount</p></td><td colspan="1" rowspan="1"><p>amount</p></td></tr><tr><td colspan="1" rowspan="1"><p>isActive</p></td><td colspan="1" rowspan="1"><p>active</p></td></tr><tr><td colspan="1" rowspan="1"><p>count</p></td><td colspan="1" rowspan="1"><p>count</p></td></tr><tr><td colspan="1" rowspan="1"><p>code</p></td><td colspan="1" rowspan="1"><p>code</p></td></tr></tbody></table></div><p>The AI Mapper evaluates both semantic similarity and data types when generating mappings. For example, isActive maps confidently to active because both are boolean fields with similar meaning. This example demonstrates that the AI Mapper considers data type compatibility in addition to field names when determining mappings.The <strong>code</strong> field demonstrates an explicit type conversion during mapping. Even though the source value is a string, the mapper applies an <strong>xsd:int()</strong> cast to convert it into an integer in the target schema. This ensures type compliance on the target side.</p><p></p><h5><u><span data-i-color="blue">Scenario 5 : Name Ambiguity</span></u></h5><p><strong><span data-i-color="indigo">Source</span>:</strong> A UserProfile system</p><p><strong><span data-i-color="indigo">Target</span>: </strong>A Contact system expecting a single name field</p><p><strong><span data-i-color="indigo">Description</span>: </strong>A UserProfile contains multiple candidate fields representing a person’s name in different contexts, including fullName, displayName, and loginName. The target Contact schema expects a single name field, which introduces ambiguity in mapping.</p><p>Here is how Source &amp; Target schemas look:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17644" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.d2021615a76c075b50b28cbe6873b2f9.png" alt="image.png" title="image.png" width="1000" height="741" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.15b4b41063a426ba60510c75898507ad.png" style="--i-media-width: 534px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Result</span></u></strong>:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17645" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.f86576f02e939abc45a1c28cde9ed09e.png" alt="image.png" title="image.png" width="1000" height="741" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.bbfcb6cec58da4217f30afb10b892bff.png" style="--i-media-width: 553px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Key mappings to observe</span></u></strong></p><p></p><div class="ipsRichText__table-wrapper"><table style="min-width: 40px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Source</p></th><th colspan="1" rowspan="1"><p>Target</p></th></tr><tr><td colspan="1" rowspan="1"><p>fullName</p></td><td colspan="1" rowspan="1"><p>name</p></td></tr></tbody></table></div><p></p><p>The AI Mapper resolves this by ranking candidate fields based on semantic similarity and contextual relevance. For example, fullName is typically ranked highest due to direct semantic equivalence, followed by displayName, and then loginName, which is less formal and more system-oriented.</p><p></p><h5><u><span data-i-color="blue">Scenario 6 : Deep &amp; Wide Schema</span></u></h5><p><strong><span data-i-color="indigo">Source</span>:</strong> A travel booking system (PNR-based reservation data)</p><p><strong><span data-i-color="indigo">Target</span>: </strong>A travel reservation system expecting a normalized Reservation structure</p><p><strong><span data-i-color="indigo">Description</span>: </strong>A Passenger Name Record (PNR) contains deeply nested travel data including booking information, passengers, flight segments, and baggage details. The target Reservation system expects a structured reservationRecord with normalized entities such as travelers and flightLegs.</p><p>Here is how Source &amp; Target schemas look:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17646" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.65521debdbfd8a0cce932e765b22fd7e.png" alt="image.png" title="image.png" width="1000" height="441" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.fd8d65b3175966d5753d3d20b763d7e5.png" style="--i-media-width: 769px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Result</span></u></strong>:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17647" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.51fa4e4c0f268b70b6e7646359e168b8.png" alt="image.png" title="image.png" width="1000" height="441" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.03d367d28ed7f4b5560a01a03b8af22d.png" style="--i-media-width: 792px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Key mappings to observe</span></u></strong></p><p></p><div class="ipsRichText__table-wrapper"><table style="min-width: 40px;"><colgroup><col style="min-width:20px;"><col style="min-width:20px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Source</p></th><th colspan="1" rowspan="1"><p>Target</p></th></tr><tr><td colspan="1" rowspan="1"><p>booking/agencyCode</p></td><td colspan="1" rowspan="1"><p>reservationRecord/agentId</p></td></tr><tr><td colspan="1" rowspan="1"><p>bookingDate</p></td><td colspan="1" rowspan="1"><p>reservedOn</p></td></tr><tr><td colspan="1" rowspan="1"><p>passengers/firstName</p></td><td colspan="1" rowspan="1"><p>travelers/givenName</p></td></tr><tr><td colspan="1" rowspan="1"><p>passengers/dob</p></td><td colspan="1" rowspan="1"><p>travelers/birthDate</p></td></tr><tr><td colspan="1" rowspan="1"><p>passengers/frequentFlyer/memberId</p></td><td colspan="1" rowspan="1"><p>travelers/loyaltyAccount/membershipId</p></td></tr><tr><td colspan="1" rowspan="1"><p>passengers/frequentFlyer/tierLevel</p></td><td colspan="1" rowspan="1"><p>travelers/loyaltyAccount/statusTier</p></td></tr><tr><td colspan="1" rowspan="1"><p>segments/flightNumber</p></td><td colspan="1" rowspan="1"><p>flightLegs/airlineCode</p></td></tr><tr><td colspan="1" rowspan="1"><p>segments/flightNumber</p></td><td colspan="1" rowspan="1"><p>flightLegs/flightNo</p></td></tr><tr><td colspan="1" rowspan="1"><p>segments/departureAirport</p></td><td colspan="1" rowspan="1"><p>flightLegs/originAirport</p></td></tr><tr><td colspan="1" rowspan="1"><p>segments/departureTime</p></td><td colspan="1" rowspan="1"><p>flightLegs/departsAt</p></td></tr><tr><td colspan="1" rowspan="1"><p>segments/arrivalTime</p></td><td colspan="1" rowspan="1"><p>flightLegs/arrivesAt</p></td></tr><tr><td colspan="1" rowspan="1"><p>segments/cabin/classCode</p></td><td colspan="1" rowspan="1"><p>flightLegs/travelClass/bookingClass</p></td></tr><tr><td colspan="1" rowspan="1"><p>segments/cabin/classCode</p></td><td colspan="1" rowspan="1"><p>flightLegs/travelClass/seatAssignment</p></td></tr><tr><td colspan="1" rowspan="1"><p>segments/cabin/baggage/allowancePieces</p></td><td colspan="1" rowspan="1"><p>flightLegs/travelClass/luggage/bagCount</p></td></tr><tr><td colspan="1" rowspan="1"><p>segments/cabin/baggage/allowanceWeightKg</p></td><td colspan="1" rowspan="1"><p>flightLegs/travelClass/luggage/maxWeightKg</p></td></tr></tbody></table></div><p></p><p>Despite the depth and repetition in the source schema, the AI Mapper processes the structure efficiently by batching embeddings and handling hierarchical nodes in chunks. Repeating structures such as passengers and segments are mapped into corresponding repeating target structures like travelers and flightLegs.The system is optimized for deep hierarchies and uses pre-embedded target caching and chunked embedding with retry logic to maintain performance and reliability. A progress dialog ("Mapping m of n nodes…") is displayed during execution to provide user visibility into long-running mapping operations, demonstrating that the process is scalable and non-blocking even for large, multi-level schemas.</p><p></p><h5><u><span data-i-color="blue">Scenario 7 : Extreme Scale: 10,000-Node Enterprise Schema</span></u></h5><p><strong><span data-i-color="indigo">Source</span>:</strong> EnterpriseDataPlatform (10,000-node enterprise master schema representing a full organizational data model).A 775 KB, 11,632-line schema with around 10000 nodes representing 50 enterprise domain sections (Customer, Account, Order, Product, Shipment, Invoice, Employee, Asset, Regulatory, and more).</p><p><strong><span data-i-color="indigo">Target</span>: </strong>A smaller domain-specific operational schema (e.g., Order Fulfillment), containing only a subset of entities such as buyers, financials, fulfillment, offers, and payments</p><p><strong><span data-i-color="indigo">Description</span>: </strong>The source is a highly complex, monolithic enterprise schema consisting of ~10000 elements across 50 business domains including Customer, Order, Product, Invoice, Shipment, Compliance, Risk, and more. Each domain is further divided into Core, Extended, Reference, Operational, and Analytical sections, resulting in deeply nested structures with high redundancy and variation in naming conventions.The target schema is significantly smaller(around 150 Nodes) and represents a focused operational model (for example, order fulfillment ) containing only essential business entities and flattened structures.</p><p>Here is how Source &amp; Target schemas look:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17648" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.755ca20aa76d8838c960d2c02678d019.png" alt="image.png" title="image.png" width="1000" height="572" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.de9118db3c1781242341b0849fbfc350.png" style="--i-media-width: 642px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Result</span></u></strong>:</p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17649" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.91b8d559203c1018370116683f48b0ca.png" alt="image.png" title="image.png" width="1000" height="572" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.17e6ae2ba742b27de2b8de8a04fd027d.png" style="--i-media-width: 685px;" loading="lazy"></p><p></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17650" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.dcd959e9583270ab3227ce1977a38ed6.png" alt="image.png" title="image.png" width="1000" height="509" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.8adcbfe592b4a47085b679d37e2d244a.png" style="--i-media-width: 704px;" loading="lazy"></p><p></p><p><strong><u><span data-i-color="indigo">Key mappings to observe</span></u></strong></p><ul><li><p>The progress bar starts indeterminate (target embedding in progress)</p></li><li><p>Switches to a determinate "Mapping N of M nodes..." bar once target count is known</p></li><li><p>Advances one tick per processed node as the mapping proceeds</p></li></ul><p>Think about what a human mapper would face: 10,000 fields to read, understand, and pair one by one. At a generous pace of 30 seconds per field, that is 83 hours of manual work. Even with a small schema of 200 fields, most integration developers budget a full day or more just for the mapping step.</p><p>The AI Mapper does the same job in under a minute. You click AI Map, watch the progress bar sweep across the screen, and the entire schema is wired up before you have had a chance to make a coffee. The speed comes from three overlapping efficiencies working together:</p><ul><li><p>All target fields are embedded in a single batch before the mapping starts — one call to the OpenAI API sends all field descriptions at once rather than one per field.</p></li><li><p>The local ONNX model runs in parallel across up to four CPU cores simultaneously, processing up to 512 field pairs per inference pass.</p><p></p></li></ul><p>The result is a complete, reviewed, deployment-ready mapping for a 10,000-node enterprise schema in the time it would take a developer to open the file</p><h4><u><span data-i-color="blue">Data Privacy and Security Considerations</span></u></h4><p>What Is Sent to OpenAI</p><p>In AI Online mode, the following information is sent to the OpenAI embedding API for each schema field:</p><ul><li><p>Field's local element name (e.g., dateOfBirth, routingNumber)</p></li><li><p>Ancestor path chain (e.g., personal inside patient record)</p></li><li><p>Data type name (e.g., string, decimal, boolean)</p></li><li><p>Cardinality (e.g., repeating, only-one)</p></li></ul><p>What is NOT sent: Actual data values, runtime payloads, process logic, activity configuration, or credentials of any kind. Only schema metadata — field names and types — is transmitted.</p><p>What Stays Local</p><ul><li><p>All ONNX cross-encoder scoring runs locally on your machine</p></li><li><p>The recommendation database (Derby or remote DB) stays within your infrastructure</p></li><li><p>The bundled word-vector dictionary (offline mode) is entirely local</p></li><li><p>The process files and all generated XPath expressions are local</p><p></p><p>If your organization's policy prohibits sending schema metadata (field names) to external services, use AI Offline mode or Legacy Smart Mapper. Both are fully air-gapped and produce no external network calls.</p></li></ul><h4><u><span data-i-color="blue">Demo Recording</span></u></h4><p>In addition to this article, a short video recording is available that walks through the demo and highlights some of the key features in AI Mapper :</p><p><video class="ipsEmbeddedVideo ipsRichText__align--block ipsRichText__align--width-custom" data-controller="core.global.core.embeddedvideo" controls="" title="" style="--i-media-width: 980px;" preload="metadata"><source src="https://media.invisioncic.com/s329579/monthly_2026_06/AI_Mapper_Demo_New.mp4.4539cdf4ed1d9604c22836f715017d12.mp4#t=0" type="video/mp4"><a href="https://community.tibco.com/applications/core/interface/file/attachment.php?id=17661&amp;key=96c0e274bc69d2586da8de09a3724494" class="ipsAttachLink" data-fileid="17661" data-fileext="mp4" rel="">AI_Mapper_Demo_New.mp4</a></source></video></p><h4><u><span data-i-color="blue">Summary</span></u></h4><p>The AI Mapper in TIBCO BusinessWorks 6.12.0 HF3 is a genuinely useful addition to the integration developer's toolkit. Its two-stage architecture - OpenAI embeddings for semantic recall, local ONNX cross-encoder for precise reranking brings real AI capability to the routine but expensive task of schema mapping.The learning database is a multiplicative force: every manual correction you make today improves tomorrow's auto-mapping, and with the shared Database option, every correction from any team member benefits everyone.</p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17636" src="//media.invisioncic.com/s329579/monthly_2026_06/image.thumb.png.6ca43f6d759d904df0e739451fec422d.png" alt="image.png" title="image.png" width="1000" height="510" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/image.png.4109695da0fdb87412dc6f5e8c771f29.png" style="--i-media-width: 0px;" loading="lazy"></p><p><img class="ipsImage ipsImage_thumbnailed ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="17662" src="//media.invisioncic.com/s329579/monthly_2026_06/Gemini_Generated_Image_2fb3ns2fb3ns2fb3.thumb.png.33afe7bc3f6136ee8ded33cc6deea4c0.png" alt="Gemini_Generated_Image_2fb3ns2fb3ns2fb3.png" title="Gemini_Generated_Image_2fb3ns2fb3ns2fb3.png" width="1000" height="580" data-full-image="//media.invisioncic.com/s329579/monthly_2026_06/Gemini_Generated_Image_2fb3ns2fb3ns2fb3.png.e820271cae6ac33ebda3b0c3308efdfe.png" style="--i-media-width: 0px;" loading="lazy"></p>]]></description><guid isPermaLink="false">3840</guid><pubDate>Mon, 15 Jun 2026 20:16:47 +0000</pubDate></item></channel></rss>
