At a glance
Before the workshop
FFE and Experio SMEs- Check the ontology is saved and has every entity type the exports will fill. A mapping is tied to one ontology.
- Open each export and fill in a first draft of the worksheet below. The room corrects a draft much faster than it writes one from scratch.
- Flag every column whose values must line up with another file (client names, emails, project codes). These are the columns the workshop is really about.
- Try Auto-Map with AI on each header row (see Accelerate with AI) and bring its suggestions as a starting point.
- Send a sample export with the exact header row the scheduled export will use. Column names that change later break the mapping.
- Say which column is the system’s own unique ID, and which column records when a row was last changed.
- Say how the export will be delivered: a file dropped in a Box, Google Drive, SharePoint or Dropbox folder, a manual upload, or a REST API. Experio has no direct database connector. Database data arrives as an export file or through an API.
Agenda
Running the workshop
1
Walk every column
Put the header row and three real rows on screen. For each column ask:
- “What is this, in your words?”
- “Which thing in our model does it describe?” (entity type)
- “Which property of that thing is it?” (attribute)
- “Does anyone ever ask a question that needs this column?” If nobody does, leave it out. Unmapped columns are ignored.
2
Pick the match key for each entity type
Ask: “If this row arrives again tomorrow, which column tells us it is the same person, client or project?” That column becomes the match key. The match property defaults to
name; choose something more stable when you have it (an email, a project code).3
Find the relationship columns
Look for columns that point at another record: a client name on a project row, a manager’s email on an employee row, a project code on an assignment row. Each becomes a relationship mapping: relationship type, start entity (column and match property), end entity (column and match property).Then ask: “Does the thing at each end already exist when this file loads?” A relationship mapping never creates its endpoints. If no node has that exact key value, the relationship is skipped. Node mappings, in this file or an earlier one, must create both ends first.
4
Agree type and format
Experio converts each mapped value to the attribute’s type in the ontology (text, number, date, boolean, list, enum) when it writes to the graph. You do not set transforms per column, so the export has to arrive in a format that converts cleanly. Agree with the data owner:
- Dates: ISO format (
2024-03-04) or one agreed format. Ambiguous values such as03/04/2024need a decision. - Numbers: plain numbers (
1250000). Test any value that has currency symbols or thousands separators before you rely on it. - Lists: one agreed delimiter or a JSON array for list attributes (for example, a list of certifications). Test with a few rows.
- Enums: values must match the ontology’s allowed values exactly (
won, notClosed Won).
5
Set up incremental sync
Ask: “Which column uniquely identifies a row in your system?” and “Which column changes when a row is edited?”
- Record ID Column: the system’s own row ID. If you leave it empty, Experio generates a hash-based ID. A stable ID from the source system is more reliable.
- Timestamp Column: a last-modified date, used to filter to changed rows on later syncs. Leave it empty to track by record ID only.
6
Check formats across files and against documents
For every key column ask: “Is this value written the same way in every other export, and in the documents?” Pull five client names from
projects.csv and look them up in accounts.csv. Look up five project codes in status report titles. Anything that does not match exactly goes on the export-fixes list with an owner.7
Nested JSON and API sources
For JSON files and REST APIs, fields inside objects are addressed with dot notation:
account.owner.email. Ask IT which authentication the API uses (API key, bearer token, basic, or OAuth2) and how it pages results. They set these on the connection.Load order
Because relationships never create their ends, the order in which files load matters. Load master data first, then the files that connect it, then documents. Rows are processed one at a time, in file order. That matters for relationships inside a single file. Ifemployees.csv lists a report before their manager, the REPORTS_TO edge for that row finds no manager and is skipped. Ask HR to sort the export from the top of the hierarchy down, or load reporting lines as a separate small export after employees.
How structured and document data converge
A structured row and a document mention end up on the same node only when both use the same entity type and the same key or name.- Structured mappings create the node with its canonical key: Client
Lakeshore Health, ProjectNB-2024-117, Employeerobert.chen@northbridge.com. - On the artifact type, set document entities to Create or Match (runs matching and can add new nodes) or Match Only (updates an existing node and never creates one).
- Document matching tolerates variants (fuzzy, synonyms, suffix removal). Structured matching does not. So the canonical form belongs in the structured file, and documents are matched onto it. That is covered in Workshop 7: Identity & Matching.
Worked example: Northbridge Consulting
Marcus Lee (super user) ran four short sessions: HR for Workday, Sales ops for Salesforce, and Finance/PMO for the two Deltek exports.employees.csv (Workday)
assignments.csv (Deltek)
This file creates no nodes. Every row depends on an Employee and a Project that earlier files created. The session turned up two export fixes:
- Deltek listed contractors who are not in Workday, so their assignments would be skipped. HR agreed to include active contractors in
employees.csv. - Deltek wrote role titles two ways (“Engagement Lead”, “Engagement Mgr”). Finance/PMO standardised them, because golden question Q1 asks “who led each?” and the assistant’s Cypher instruction looks for the role
Engagement Lead.
The other mappings
accounts.csv→ Client (Create or Match onname, the canonical Salesforce name), withaccount_idandindustryas attributes. Industry values match the Industry taxonomy.projects.csv→ Project (Create or Match onproject_code), ProjectFOR_CLIENTClient (end matched on the client name column, which must equalaccounts.csvexactly), ProjectDELIVERED_BYPractice.opportunities.csv→ Proposal outcome updates, matched on opportunity name. Optional; deferred to after the pilot.
Accelerate with AI
Auto-Map with AI is available in the mapping editor today. It reads the source columns (and sample values when you upload a CSV) and suggests node mappings (column → entity type and attribute) and relationship mappings against the mapping’s ontology.- Open or create a mapping in Model & Define > Data Mapping and add the source fields, either by uploading a sample CSV or with Import from API. The button stays disabled until the mapping has source fields and an ontology.
- Click Auto-Map with AI. Choose a model and, if you want, add a user instruction, for example “Employees are matched on work email; practice is a separate Practice entity”.
- Click Generate. Review the node mapping and relationship mapping suggestions, clear the checkboxes for any you reject, and click Add mapping.
- Columns the AI did not map are listed separately. Map them by hand or leave them out on purpose.
Entering it in Experio
1
Create the mapping
Model & Define > Data Mapping > Create New Mapping. Choose the ontology, then add source fields (upload a sample CSV, add fields by hand, or Import from API).
2
Add node mappings
For each column, choose the entity type and attribute. For the key column of each entity type, set the operation (Create Only, Match Only or Create or Match) and the match property.
3
Add relationship mappings
Choose the relationship type, the start and end entity types, and for each end the column and property used to find it. Add relationship attributes (such as
role and hours).4
Set incremental ingestion
In Incremental Ingestion, set the Record ID Column and the Timestamp Column. Save.
5
Connect the source and pick the mapping
Set up the connection in Connect > Connectors (file storage or an API connection), then create the structured data source in Connect > Data Sources and select the mapping definition.
6
Load in order and check
Run the scans in the agreed load order. Process > Flows can chain them so the order holds on every refresh. After each load, check node and relationship counts against the row counts in the file.
Common pitfalls
- Key values formatted differently across files.
Lakeshore Healthin one file andLakeshore Health, Inc.in another gives two Client nodes. Structured matching will never join them. - Loading a connecting file before its master data. Assignments loaded before employees produce no edges, and nothing looks broken until someone asks a staffing question.
- Expecting a relationship mapping to create missing people or projects. It never does. Missing ends are skipped.
- Header rows that change between exports. A renamed column silently stops filling its attribute. Agree a fixed export layout with the data owner.
- Mapping every column “just in case”. Unused attributes add noise to Cypher generation. Map what the golden questions need.
- Names as keys when a code exists. Match on
project_codeandemailwhenever you can. Names change; codes rarely do. - Keys that don’t match what the documents say. If status reports cite
NB-2024-117but Deltek exports2024117, documents set to Match Only will never find the project.
Exit criteria
- A mapping worksheet exists for every structured export in the inventory, signed off by its data owner.
- Each entity type has one agreed match key, with the same format in every file that uses it.
- Every relationship mapping has both ends created by a node mapping earlier in the load order.
- Record ID and timestamp columns are chosen for each export (or explicitly left empty).
- Date, number, list and enum formats are agreed; export fixes have owners and dates.
- The load order diagram is agreed and recorded.
- Each mapping is saved in Model & Define > Data Mapping and shows a valid compatibility status.
- A test load of the sample rows gives the expected node and relationship counts.