Data Management Framework
Master the Data Management workspace in F&O β import/export projects, entity sequencing, composite entities, change tracking, field mapping, and recurring data jobs.
Data Management Framework
The Data Management Framework (DMF) is the bulk data engine of F&O. When Module 21 talked about asynchronous integration for thousands of records β this is the machinery that makes it happen. Whether you are migrating data from a legacy system, running nightly feeds from a warehouse, or exporting financial data to a reporting system, DMF is where you configure and run it.
Think of DMF as an airport baggage system.
Your data (the luggage) arrives in a file β CSV or XML. The staging area is the carousel where bags get scanned, checked, and sorted. Field mapping is the routing label β it tells the system which field in your file maps to which field in F&O. Entity sequencing is the loading order β you canβt put bags on a plane that hasnβt been assigned to a gate yet. The target is the final destination table in F&O.
The whole flow: Source file β Staging β Validation β Target table.
The Data Management Workspace
Everything starts in the Data management workspace (SystemAdministration > Workspaces > Data management). This is mission control for all bulk data operations.
Key tiles in the workspace:
| Tile | Purpose |
|---|---|
| Import | Create a new import project (bring data into F&O) |
| Export | Create a new export project (send data out of F&O) |
| Job history | View status of all past and running jobs |
| Data entities | Browse and configure available entities |
| Framework parameters | Global settings (parallel processing, error thresholds, staging behaviour) |
| Entity list sequence | Configure import ordering across entities |
π Marcus setting up Anitaβs migration: βI always start with an export project first β even before the import. Export a few sample records from the target entity so you can see the exact format F&O expects. Then use that file as a template for your import file. Saves hours of debugging field mismatches.β
Import Projects β Step by Step
Creating an import project
- Data management workspace β Import tile
- Give the project a name (e.g., βVendor Master - Phase 1β)
- Select the source data format β CSV, XML, or Excel
- Click Add entity β choose the target entity (e.g.,
Vendors V2) - Upload your source file
- F&O auto-generates the field mapping and shows the staging table
- Review and adjust mappings β then Import
The three-stage pipeline
Every import flows through three stages:
Source File β Staging Table β Target Table
(CSV/XML) (validation) (actual F&O data)
- Source β Staging: Raw data is loaded into the entityβs staging table. Format conversion happens here (dates, numbers, enums).
- Staging β Target: DMF runs the entityβs
validateWrite(),initValue(), andinsert()methods. Business logic executes. Invalid records are flagged.
Why staging tables matter
Staging tables serve as a buffer. If your import fails halfway, the staging data is still there. You can fix the errors and re-run the staging-to-target step without re-uploading the file. This is especially valuable for large imports where re-upload would take significant time.
You can also choose to skip staging for better performance (bypasses the staging step entirely), but you lose the ability to inspect and fix errors. Separately, set-based processing (configured in Framework parameters) uses SQL set operations instead of row-by-row processing during the staging-to-target step β this is a different optimisation that keeps staging but processes records in bulk.
Field Mapping
Field mapping controls how source columns map to staging/target fields. DMF auto-maps by matching column names, but you often need to adjust.
Mapping types
| Mapping Type | Description |
|---|---|
| Auto-generated | DMF matches source column names to entity field names |
| Manual | You drag/drop or configure individual field mappings |
| Default value | Set a constant value for a field (useful for dataAreaId or status fields) |
| Transform | Apply a value transformation function during mapping |
π Marcusβs mapping tip: βThe most common mapping mistake? Forgetting
dataAreaId. If your source file doesnβt have a legal entity column, set it as a default value in the mapping β otherwise every record imports into the wrong company or fails.β
Mapping visualiser
The mapping screen shows a visual canvas: source fields on the left, staging/target fields on the right, with lines connecting mapped pairs. Unmapped source fields are ignored. Required target fields without a mapping cause validation errors.
Key mapping operations:
- Generate mapping β auto-map based on column names
- Map to entity β skip staging, map directly source β target
- Modify mapping β adjust individual connections
- Default value β set constants for fields not in the source
Exam tip: Mapping source β staging β target
The exam may present a scenario where a field name in the CSV does not match the entity field name. The answer is to use the field mapping visualiser to manually connect the source column to the correct staging field. Auto-mapping only works when names match exactly. Also remember: you can map to staging OR directly to entity β mapping to staging is the default and recommended approach.
Entity Sequencing
When importing multiple entities, order matters. You cannot import sales order lines before sales order headers. Customer addresses need the customer to exist first.
Configuring sequence
In the Entity list sequence area of the Data Management workspace:
- Add all entities involved in the import
- Set the execution order (lower number = imported first)
- DMF processes entities sequentially in the specified order
Common sequences:
| Order | Entity | Why |
|---|---|---|
| 1 | Legal entities | Everything depends on company codes |
| 2 | Customers | Must exist before addresses or transactions |
| 3 | Customer addresses | References the customer record |
| 4 | Customer bank accounts | References the customer record |
| 5 | Open balances | References customers and accounts |
π Marcusβs sequencing lesson: βTomokoβs first migration attempt failed because she imported vendor invoices before the vendors existed. 12,000 records β all failed with βVendor account not foundβ. Set the sequence once, save yourself the headache.β
Composite Entities
Some business documents have a header-line structure β a sales order has one header and many lines. Composite entities bundle these into a single importable unit.
How they work
A composite entity wraps:
- One header entity (e.g.,
SalesOrderHeaderV2) - One or more line entities (e.g.,
SalesOrderLine)
When you import via a composite entity:
- The data file contains both header and line data (nested XML, or separate CSV sheets)
- DMF imports the header first, then the lines β maintaining referential integrity
- It is atomic β if lines fail, the header is rolled back too
Format note: Composite entities work best with XML format because XML naturally represents nested structures. CSV requires separate files for header and lines.
| Aspect | Regular Entity | Composite Entity |
|---|---|---|
| Structure | Flat β one table/view | Nested β header + lines |
| Import format | CSV, XML, or Excel | XML preferred (nested structure) |
| Atomicity | Per-record | Per-document (header + all lines) |
| Use case | Master data (customers, vendors) | Documents (orders, invoices, journals) |
| Sequencing | Manual (entity list sequence) | Automatic (header before lines) |
| Example | CustomersV3 | SalesOrderHeaderV2Entity (composite) |
Change Tracking for Incremental Exports
Instead of exporting all 500,000 customer records every night, change tracking lets you export only records that changed since the last export.
How it works
- Enable change tracking on the data entity (Data entities tile β select entity β Change tracking tab)
- F&O uses SQL Server change tracking on the entityβs backing tables
- When you run an export, DMF queries only rows where
SYS_CHANGE_VERSION > last_sync_version - Result: a delta export containing only inserts, updates, and deletes since last run
Change tracking modes:
| Mode | Description |
|---|---|
| Entire entity | Track changes on the primary table only |
| Primary table and related tables | Track the entityβs primary table plus all joined tables β detects changes in any source table |
| Custom query | Custom query filter applied to determine which records are tracked β narrows scope but uses the same SQL change tracking infrastructure |
π Marcus to Tomoko: βYour nightly product export was taking 45 minutes because it exported everything every time. I enabled change tracking β now it only picks up the 200-300 products that actually changed. Export drops to under 2 minutes.β
Exam tip: Change tracking scope
The exam may ask about the difference between βEntire entityβ and βPrimary table and related tablesβ change tracking. If a customerβs address changes (stored in a different table joined by the entity), βEntire entityβ will NOT detect it because it only watches the primary table. You need βPrimary table and related tablesβ to catch changes in any table that feeds the entity.
Recurring Data Jobs
Recurring data jobs automate import/export on a schedule β no human intervention needed.
Setting up a recurring export
- Create an export project in the Data Management workspace
- Select your entity and configure mappings
- Click Create recurring data job
- Set the recurrence pattern (every N minutes/hours/daily)
- Configure the application queue β this is where external systems dequeue the data via API
Setting up a recurring import (enqueue)
- Create an import project
- Configure the entity and mappings
- Create a recurring data job
- External systems call the enqueue API to submit data files
- DMF processes them on the configured schedule
The API endpoints:
// Enqueue (import)
POST /api/connector/enqueue/activity-id
// Dequeue (export)
GET /api/connector/dequeue/activity-id
// Acknowledge (confirm receipt of dequeued data)
POST /api/connector/ack/activity-id
π Marcusβs integration pattern: βThe dequeue/acknowledge handshake is critical. Your middleware calls dequeue to get the file, processes it, then calls acknowledge to tell F&O βI got it, you can remove it from the queueβ. Skip the acknowledge and F&O keeps serving the same file forever.β
Aggregate Entities
Aggregate entities are special data entities built on aggregate measurements (pre-computed OLAP-style data). They expose summarised/aggregated data for reporting integrations.
- Built on aggregate data sources (not regular tables)
- Read-only β used for export/reporting only
- Refresh their data based on measurement refresh schedules
- Ideal for integrating with data warehouses or BI tools that need pre-aggregated numbers
Aggregate vs regular entities
Regular entities expose transactional data (individual records). Aggregate entities expose pre-computed metrics β think βtotal sales by region by monthβ rather than individual sales orders. The exam may test whether you know aggregate entities are read-only and cannot be used for import.
Exam Practice
Tomoko needs to import sales orders with their lines from an external system. Each order has one header and multiple lines. What should Marcus recommend?
An export job is running nightly but takes 90 minutes to export 800,000 product records, most of which haven't changed. What should be enabled to reduce export time?
After configuring a recurring export, the external system calls dequeue and receives the data file. What must happen next to prevent F&O from re-serving the same file?
A customer address is stored in a separate table joined by the Customers data entity. Change tracking is set to 'Entire entity'. An address is updated. Will the customer appear in the next incremental export?
Next up: Custom Services, REST & SOAP β build your own service endpoints, consume external REST APIs from X++, and use Electronic Reporting as an integration tool.