Indu Learning Platform
Course/Unit 6 · AI inside MDG
Lesson 6-4

AI in data migration

Use AI where migration time actually goes: mapping drafts, value mapping, error triage and reconciliation narratives.

Watch firstSAP's AI migration tools from ECC to S/4HANA: faster and cheaper ERP transitions · TechzineOpen on YouTube ↗

Where the time goes

Migration effort is not the 'Migrate' button. It is mapping specs, value maps, reading load errors after each mock, and explaining reconciliation numbers. Those text- and pattern-heavy tasks are where LLMs help. The business still signs the mapping, the Migration Cockpit (or your ETL tool) still loads, and you stay accountable.

Mapping specs and value maps30%Load error analysis per mock22%Data cleansing coordination20%Reconciliation and sign-off15%Tool setup and load execution13%
Illustrative effort split. The top two bars are where AI helps most.

AI-assisted field mapping

Give the model legacy fields (names, descriptions, value profile) and the Migration Cockpit template fields. It returns a draft mapping with confidence and reasons. Confirm the easy 1:1 lines fast; spend your time on account group to BP grouping and roles, company code versus purchasing org fields, and Z-fields. The output is a draft spec, not a load file.

ECC legacy (LFA1/LFB1)S/4HANA Supplier templateLIFNRNAME1STCD1LAND1KTOKKZTERM (LFB1)ZZ_RISK_CLASSSupplier / BP numberOrganization name 1Tax number (category)CountryBP grouping + rolesPayment terms (company code)Custom field?0.95 key mapping0.980.74 tax category per country0.990.61 value map, review0.880.30 ask business
Below about 0.8 goes to a consultant; anything custom goes to the business.
Prompt
You assist an SAP data migration consultant (ECC to S/4HANA, Supplier).
SOURCE: legacy fields with description and value profile (JSON).
TARGET: Migration Cockpit template fields for the Supplier object (JSON).

For each source field return:
- source_field, target_field (or null if none fits)
- transformation: "direct", "value_mapping", "derive", "split", "concatenate" or "drop"
- confidence (0-1) and a one-sentence reason
- open_question for the business if the meaning is unclear

Only use target fields from the TARGET list.
Custom Z fields: never guess a target; set target_field null and ask.
Return JSON: {"mappings": [...]}

'Only use target fields from the list' prevents invented targets.

Value mapping suggestions

Most mock-load errors come from value maps: account groups, payment terms, regions, tax categories. The LLM proposes from legacy values plus allowed target values with descriptions. Your script rejects any target not in the target system's customizing list.

Legacy valueAI suggestionConf.Consultant decisionKTOKK 0001 DomesticBP grouping BPEX, role FLVN010.82AcceptKTOKK 0005 One-timeOne-time grouping + role0.77Accept, check number rangeKTOKK Z010 IntercompanyBPEX + FLVN010.48Change: own groupingZTERM N30 Net 30Payment terms N300.96AcceptZTERM X99 (no text)null, ask business0.10Business: obsolete, drop
Low confidence and missing descriptions are signals, not failures.

Try it: tighten the value-map rules

Try it · Fill the blanks

Complete the team's value-mapping guideline.

A suggested target value is accepted only if it exists in the . Suggestions below 0.8 confidence go to a . A legacy value with no description is sent to the . Every approved value map records .

Error clustering after a mock load

Thousands of errors are usually a few problems repeated. Cluster without AI first: group by message class and number, and replace record-specific values with placeholders. Then send the LLM one example and a count per cluster, never record keys, and ask for root cause and where to fix it.

Payment terms not defined(value map)3120Tax number format invalid(source)1840Region not defined for country1290Reconciliation account missing960Bank key does not exist610
Five clusters explain about 7,800 of 8,000 errors.
Python
import re
import pandas as pd

log = pd.read_csv("mock2_messages.csv")  # object, record_key, msg_class, msg_no, text

def normalize(text):
    text = re.sub(r"\b\d{3,}\b", "<NUM>", text)         # long numbers / keys
    text = re.sub(r"\b[A-Z0-9]{2,4}\b", "<CODE>", text)  # short codes
    return text

log["pattern"] = log["text"].map(normalize)
clusters = (log.groupby(["msg_class", "msg_no", "pattern"])
               .agg(count=("record_key", "size"), example=("text", "first"))
               .reset_index().sort_values("count", ascending=False).head(15))
# send clusters.to_json(orient="records") to the model: root cause + fix location

Only message classes, normalized text and counts leave. Record keys stay local.

Try it: 8,000 errors after mock 2

Try it · What would you do?

Mock 2 ends with 8,000 error messages and the steering committee is in two days. What is your first move?

AI across the mock-load rhythm

Drafts before each mock, triage after, a reconciliation narrative before sign-off. For narratives, every number comes from your reconciliation queries and must be checked; one invented number does more damage than no narrative. At cutover, prompts and scripts are frozen.

Step through · 1 of 7
DiscoveryAI profiles sourcesMapping draftAI + consultantBusiness sign-offhuman onlyMock loadsMigration CockpitError triageAI clustersReconciliationAI drafts narrativeCutoverfrozen scripts
AI summarizes each source system's structures and value profiles, so workshops start from a draft.
Humans own sign-off and cutover.

Many source systems

With many sources, run the same profile and prompt per source, then ask the model to list cross-source conflicts. That list becomes one harmonization workshop instead of fifteen. Label everything draft, reviewed or approved.

ECC (core)LFA1 / KNA1Plant system Aflat filesAcquired companyother ERPProcurement toolAPI extractSpreadsheetslocal mastersHarmonized target mapping
Same profile and prompt per source, one decision per conflict.

Try it: AI, human, or neither?

Try it · Sort

Sort each migration task.

AI can draft
Human decides
No AI at all
Click an item, then a bucket (or drag it).

What SAP itself offers

Know the headlines without overselling. SAP publishes material on AI-assisted data migration with SAP Cloud ALM (check scope in the docs). Its Q3 2026 highlights describe Transition Data Quality agents that apply fixes only after human approval, in phased GA. At Sapphire 2026, SAP and Palantir announced AIP for data migration as an SAP Endorsed App. Position your scripts as complementary, with the same governance.

Remember

  • The biggest AI gains in migration are mapping drafts, value-map suggestions and error clustering.
  • AI output is a draft; the business signs it, your load tool executes it, and invented target values are rejected.
  • Cluster errors deterministically, verify every number in narratives, and freeze prompts and scripts before cutover.

Check yourself

An AI mapping proposes a target BP grouping that does not exist in the target system. What should happen?
Which migration activity should not involve new AI experimentation?
How does SAP's Q3 2026 highlight describe the Transition Data Quality Automated Resolution agent?