# Data Mapper Extract steps, filters and relationships

*Omnistudio Developer Study Guide · Data Mappers · Last updated October 27, 2026 · https://www.certifyforce.com/study-guide/omnistudio-developer/data-mappers/data-mapper-extract-steps-filters-and-relationships*

How to chain extract steps with filters that point at earlier steps, predict the nested output JSON, read parent fields with relationship notation, and use filter operators, LIMIT, OFFSET, ORDER BY and environment variables in a Data Mapper Extract.

- Certification: Salesforce Omnistudio Developer
- Exam section: Data Mappers
- Study guide: https://www.certifyforce.com/study-guide/omnistudio-developer

**Official exam objective:**

> Configure and retrieve data from multiple objects with various filter options using Extract Interface.

## What the exam expects

- Decide how many extract steps a requirement needs from how the objects are related (single object, parent fields, child records).
- Write step filters that reference an earlier step with the full object path, and predict the nested JSON the Extract returns.
- Read parent fields with relationship notation in Extract JSON Paths instead of an extra step.
- Configure filter operators (Equals, INCLUDES, AND/OR), LIMIT, OFFSET and ORDER BY, and use environment variables as filter values.
- Inspect what each step returns with View Extraction Step JSON before mapping.

Key terms: **extract step** (one object read on the Extract tab, with its Extract Object Path and filter), **Extract Object Path** (where the step's records sit in the extraction step JSON, such as `Account:Case`), **relationship notation** (a dot path to a parent's field, such as `Account.Name`), **Extract JSON Path** (the source path a mapping reads), **OFFSET** (where record retrieval starts, read from an input node).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Step order | Objects are queried in the order of the extract steps | [Multiple Extract Steps](https://help.salesforce.com/s/articleView?id=xcloud.os_when_to_use_multiple_extract_steps_45967.htm&language=en_US&type=5) |
| Child records | Need at least two extract steps | [Multiple Extract Steps](https://help.salesforce.com/s/articleView?id=xcloud.os_when_to_use_multiple_extract_steps_45967.htm&language=en_US&type=5) |
| Later-step filter | Uses the complete hierarchy, such as `Id = Account:Case:ContactId` | [Three Related Objects](https://help.salesforce.com/s/articleView?id=xcloud.os_extract_data_from_three_related_objects_46249.htm&language=en_US&type=5) |
| Relationship notation | Relationship name (`Account.Name`), child to parent only | [Relationship Notation](https://help.salesforce.com/s/articleView?id=xcloud.os_relationship_notation_versus_multiple_extract_steps_45995.htm&language=en_US&type=5) |
| LIMIT | 1 through 50000; default 50000 | [Configure Extract](https://help.salesforce.com/s/articleView?id=xcloud.os_define_the_initial_extraction_45906.htm&language=en_US&type=5) |
| OFFSET | Dynamic input node; integer 0 to 2000 | [Configure Extract](https://help.salesforce.com/s/articleView?id=xcloud.os_define_the_initial_extraction_45906.htm&language=en_US&type=5) |
| INCLUDES / EXCLUDES | Multi-select picklist fields only | [Configure Extract](https://help.salesforce.com/s/articleView?id=xcloud.os_define_the_initial_extraction_45906.htm&language=en_US&type=5) |
| Nulls in ORDER BY | SOQL sorts nulls first by default | [ORDER BY](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_orderby.htm) |
| Environment variable filter | Double-quoted and case-sensitive | [Environment Variables](https://help.salesforce.com/s/articleView?id=xcloud.os_environment_variables_in_dataraptors_and_integration_procedures_47878.htm&language=en_US&type=5) |
| SOQL limit | 100 queries per Apex transaction; exceeding it fails the Data Mapper | [Configure Extract](https://help.salesforce.com/s/articleView?id=xcloud.os_define_the_initial_extraction_45906.htm&language=en_US&type=5) |

## Check yourself

- Why does the Case step in Help's example filter on `AccountId = Account:Id` and not `AccountId = Id`?
- When is relationship notation not an option?
- Why can't an OFFSET filter hold the literal value 20?
- What does a child step with three matching records return under its parent node?
- Where do you see every field an extract step can return?

## Sources

- [Configure an Omnistudio Data Mapper Extract](https://help.salesforce.com/s/articleView?id=xcloud.os_define_the_initial_extraction_45906.htm&language=en_US&type=5)
- [When to Use Multiple Extract Steps](https://help.salesforce.com/s/articleView?id=xcloud.os_when_to_use_multiple_extract_steps_45967.htm&language=en_US&type=5)
- [Extract Data from Three Related Objects](https://help.salesforce.com/s/articleView?id=xcloud.os_extract_data_from_three_related_objects_46249.htm&language=en_US&type=5)
- [Relationship Notation versus Multiple Extract Steps](https://help.salesforce.com/s/articleView?id=xcloud.os_relationship_notation_versus_multiple_extract_steps_45995.htm&language=en_US&type=5)
- [Environment Variables in Omnistudio Data Mappers and Integration Procedures](https://help.salesforce.com/s/articleView?id=xcloud.os_environment_variables_in_dataraptors_and_integration_procedures_47878.htm&language=en_US&type=5)
- [ORDER BY (SOQL and SOSL Reference)](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_orderby.htm)
- [Omnistudio Data Mapper Best Practices](https://help.salesforce.com/s/articleView?language=en_US&id=xcloud.os_dataraptor_best_practices_47412.htm&type=5)
- [Examples of Omnistudio Data Mappers](https://help.salesforce.com/s/articleView?id=xcloud.os_examples_data_mappers.htm&language=en_US)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 7 linked practice questions, and unlimited timed mock exams are included with the Omnistudio Developer pack (USD $19): https://www.certifyforce.com/practice-exams
