Lesson 1 of 5
Profiling source data
9 min
Every migration inherits the data habits of the old system. Fields that were optional for fifteen years are half empty. Codes that were retired are still on old records. The same customer was created three times by three clerks. None of this stops the old system working, because people learned to work around it. It does stop the new system working, because SAP S/4HANA applies its checks to every record you load. Profiling is how you find these problems early, measure them and give them to the right owner, before they turn into load errors in a mock or wrong data in production.
Profiling means examining the structure and content of the source data systematically: how complete each field is, which values occur and how often, which records break rules, and which records look like duplicates. It is analysis, not repair. The output is a list of findings with counts, examples and a proposed owner, plus a baseline you can measure progress against.
Our running example in this course is Contoso's Wave 2. Contoso converted its ECC system to SAP S/4HANA, and right after that it acquired Alternadores del Norte S.A. de C.V. in Monterrey, Mexico. Alternadores runs a non-SAP legacy ERP. Its customers, suppliers, products, open items and balances must be loaded into Contoso's converted system as new company code 1910 (MXN) with plant 1910 Monterrey, using the Migration Cockpit and a series of mock loads. That legacy data is what we profile, cleanse and map.
The quality dimensions
Data quality practitioners describe problems along a few standard dimensions. Using them gives every finding a clear category and makes metrics comparable across objects.
| Dimension | Question it answers | Typical check | Contoso example |
|---|---|---|---|
| Completeness | Is the value there? | Share of empty values per field | 57 in-scope customers have no postal code |
| Validity | Is the value allowed? | Value against a list, format or range | 140 customers carry legacy payment term codes that have no agreed mapping |
| Uniqueness | Does the thing exist only once? | Duplicate candidates by tax number, name and address | Three records for Flotillas Monterrey sharing one RFC tax number |
| Consistency | Do related values agree? | Cross-field and cross-table rules | Region code does not match the Mexican state of the postal code, for example Nuevo León |
| Accuracy | Is the value true in the real world? | Comparison with a trusted source or the owner | A supplier bank account that the supplier closed last year |
| Timeliness | Is the record still current? | Last activity date against the selection rule | 1,234 customers with no activity in 24 months and no open items |
What to profile, and against what
Profile with the target in mind. A field that is optional in the legacy system may be mandatory in the Migration Cockpit template for the business partner, the product or an open item, or may need a format that SAP S/4HANA validates, such as a tax number or a postal code for a given country. Start from the migration template of each object: list its mandatory fields, its fields that are checked against configuration (payment terms, plants, units of measure) and the fields the business says matter. Those lists decide which source fields you profile first.
- Column profiles: empty counts, distinct values with frequencies, minimum and maximum, and format patterns (for example how many Mexican postal codes have exactly five digits, and how many lost a leading zero in a spreadsheet).
- Rule checks: business rules written as tests, such as "every active supplier has a bank account" or "every product with stock has a valuation class".
- Cross-table checks: references that must exist, such as open items whose customer is blocked or archived.
- Duplicate candidates: records that match on tax number, or closely on name and address. Fuzzy matching finds candidates; owners decide whether they are real duplicates.
Tools vary. SAP offers SAP Information Steward, whose profiling includes content, uniqueness, redundancy and dependency profiles, and SAP Master Data Governance offers consolidation with duplicate matching for business partner and product data where it is licensed. Many teams also profile extracts with SQL or a data preparation tool in the staging area. The tool matters less than repeatability: profiling must be rerun on every new extract, so script it once and keep the scripts with the mapping specification.
- SnapshotExtract the source as of a recorded date and time
- Column profilesEmpty, distinct, pattern and range counts per field
- Rule checksBusiness and target rules run as queries
- Duplicate candidatesMatches on tax number, name and address
- Findings logEach finding with count, examples, dimension and proposed owner
- BaselineFirst metrics recorded so later mocks show progress
Sorting findings
Not every finding has the same urgency. Some will make records fail to load. Others will load cleanly and still be wrong for the business, which is more dangerous because nothing flags them. A third group is records that should not be migrated at all.
- Will the record fail a target check, such as a missing mandatory field or a value with no configuration?Yes → load blocker: fix before the next mock · No → next question
- Is the value valid for SAP but wrong or doubtful for the business?Yes → quality issue: the data owner decides the rule · No → next question
- Should the record be migrated at all?No → selection question: the owner confirms the exclusion rule · Yes → record as information and keep monitoring
What would you do?
Profiling the Alternadores supplier master shows that 12% of active suppliers have their bank details typed into a free-text note field instead of the bank data fields. The migration template needs structured bank data. The migration specialist could write a parser to pull the numbers out of the notes. What should happen first?
- Profiling measures source data before you design rules; it finds, counts and assigns, it does not fix.
- Use standard dimensions: completeness, validity, uniqueness, consistency, accuracy, timeliness.
- Profile against the target template and configuration, not only against the source.
- Script profiling so it reruns on every extract and produces comparable baselines.
Check your understanding · not graded
Lesson check
1. What is the main output of a profiling pass?
2. Three customer records share one tax number. Which dimension does this finding belong to?
3. Why profile against the target migration template as well as the source?
4. Which finding is most dangerous because nothing flags it during the load?