Lima Backbone Orchestration

Run every job on time, and recover when something goes wrong.

Orchestration decides when each job starts and what happens next. A job can start in five ways, and each job has a deadline set on the business calendar. When a rule finds a data problem, the job pauses, keeps its place, and resumes from its last checkpoint once the data is fixed.

ONE NIGHT ON THE SHOWCASE ESTATE · 00:00 TO 06:30AMBER = HOLD · DASHED LINE = DEADLINE00:0001:0002:0003:0004:0005:0006:00HOLD · 44 MINotif_nightlyinventory_refresh3pl_enrichmentDEADLINE 06:30done · 3h 32m to spare00:00 jobs start · 02:14 a rule fails, three pipelines pause at their checkpoints · 02:51 cause found · 02:58 resume, 841K events replayed in order · 03:14 complete
One night on the showcase estate. A rule found 847 negative quantities at 02:14; three pipelines paused; the cause was found at 02:51; the pipelines resumed from their checkpoints at 02:58. 44 minutes from detection to resume, 0 manual restarts, 84 downstream subscribers unaffected.
48
pipelines: 42 running, 3 held, 1 incident
showcase estate
5
ways to start a job: schedule, event, dependency, quality rule, external scheduler
product
44 min
from detection of a data problem to resume
showcase estate
841K
events replayed in order after the hold
showcase estate
3h 32m
to spare at the 06:30 deadline
showcase estate
What it does

What orchestration does

Orchestration is the part of the Backbone that runs the jobs: when each one starts, in what order, and what happens when something goes wrong.

A pipeline describes the work: read these tables, change them this way, write them there. Orchestration decides when that work runs. It starts each job at the right moment, runs the steps in the right order, and checks the result. When a step fails or the data is wrong, it decides what happens next and who is told.

Every job has a deadline. The deadline is the business event the job serves, such as the 06:00 planning run or the Friday review. While the job runs, Backbone projects the finish time and compares it with that deadline.

The steps on the right are a normal night on the showcase estate. The sections below take each part in turn: how a job starts, how its deadline is set, what happens when the data is wrong, how a flow is drawn, and how a run is watched.

StartAt 00:00 the scheduled jobs start: the SAP change capture, the Oracle change capture and the ingest from the warehouse management system (WMS).
Run the steps in orderEach pipeline runs its steps one after another. A step starts when the steps it depends on have finished, so an SAP extract and an Oracle extract can run at the same time and feed one transform.
CheckQuality rules run on the data. A row that fails a rule becomes an exception record with an owner. When a whole batch fails a rule, the pipeline pauses and keeps its place.
LoadThe results are written to the target: the data warehouse, the certified view or the planning application.
Tell the subscribersThe people and systems that use the result are told it is ready. The run log records the row count and the time of each step.
Triggers

Five ways to start a job

A job starts on a schedule, on an event, after another job, when a quality rule releases it, or when your enterprise scheduler calls it. The counts are the showcase estate’s 48 pipelines.

Way to startWhat it meansExampleShowcase estate
On a scheduleA time expression sets when the job runs. It is written as a cron expression, the standard way to state a time such as every weekday at midnight or every 15 minutes, and shown with a readable label.otif_nightly starts at 00:00 every day; finance_net_revenue at 02:00.28 pipelines
On an event or webhookA message from another system starts the job the moment it arrives. A webhook is a message one system sends to another when something happens.A dispatch message from the warehouse system starts the ingest at once. An SAP change event starts the enrichment that follows it.12 pipelines
After another job finishesThe job waits for the jobs it depends on and starts when all of them are complete.The board report starts when v_otif_daily and v_net_revenue have both been refreshed. The month-end flow waits for every source pipeline.8 pipelines
Held or released by a quality ruleA quality rule holds the job while a batch of data is wrong and releases it when the batch is fixed. The job resumes from its checkpoint.The three pipelines that read the warehouse feed paused at 02:14 and resumed at 02:58.auto-pause
Started by your enterprise schedulerYour scheduler keeps the company calendar, calls the Lima job, and receives the status back when it finishes.The corporate scheduler starts the finance load at month end and records the completion status.external

The extraction steps from an ERP, the system that holds orders, stock, materials and finance, are ordinary tasks in a flow. An SAP extract, an Oracle extract and a file load can run in parallel and feed one transform step, which starts when all three have finished. A schedule can apply to a workflow, which is a set of jobs; to one execution of a workflow; or to a complete pipeline.

On SAP and on Oracle

The extract task is the same box on the canvas for both ERPs. The way it reads differs, and the table sets the two side by side.

SAP ECC and S/4HANAOracle E-Business Suite (EBS) and Oracle ERP
How the extract task readsThrough released function modules, BAPIs and CDS views. A BAPI is a function SAP publishes for reading or writing one business object. A CDS view is a database view SAP defines and releases.Through JDBC, the standard database connection, with a large table split into partitions so that several threads read it at once.
How changes reach itApplication-level change capture: change pointers, table-level change capture, delta-enabled CDS views and extractor delta queues. On the showcase estate this delivers 2.8M events a day.A last-update column on each table, or LogMiner change capture, which reads changes from the database log where the database administrator allows it. On the showcase estate LogMiner delivers 0.9M events a day.
What starts itA schedule for the nightly delta, or an event when change capture delivers changes during the day.A schedule for the nightly read past the last-update marker, or an event when LogMiner delivers changes.

The full statement for SAP and Oracle, method by method →

Deadlines

A deadline set on the business calendar

Each job is scheduled against the business event it serves. Backbone works backwards from that event and watches the run against it.

A business deadline is the time of the business event a job serves: the planning dataset must be loaded before the 06:00 MRP run, or the OTIF figures must be on the board by 06:30. Backbone schedules each job against that time and watches the run against it. The five steps on the right show how a deadline is set and kept.

OTIF stands for on time and in full, a delivery measure. MRP is the ERP’s material requirements planning run. Both are business events with a fixed time, and both appear in the table of deadlines below.

Name the business event the job servesExamples: the 06:00 MRP run, which is the ERP’s material requirements planning run that turns demand into supply orders; the Friday S&OP review, the weekly meeting where sales and operations agree one plan; or the month-end close.
Backbone works backwards from that timeFrom the event time it sets the run window, which is the period in which the job must finish, and the latest time each step can start.
The finish time is projected while the job runsFrom the live progress of each step, Backbone projects when the job will finish and compares it with the deadline.
The owner is alerted before the missWhen the projected finish passes the deadline by more than 15 minutes, the owner is paged through PagerDuty. A quality anomaly reaches Slack in 340 ms.
A hold is recorded on the clockWhen a quality rule pauses the job, the clock records the hold. The run report shows the time spent on the hold and its reason, separately from the time spent running, so the reason for a late finish is visible.

Four deadlines as examples

The business eventRun windowWhat can pause the jobWho is told, and when
The 06:00 MRP runillustrationOpens after the day’s postings; must close before 06:00; a checkpoint after every stepA quality rule on order quantities; the source system unavailableThe on-call planner through PagerDuty when the projected miss is over 15 minutes
OTIF on the board by 06:30showcase estate00:00 to 06:30; three dependent pipelinesNegative quantities; a changed carrier codeSlack #data-ops when the rule fails; PagerDuty when a miss is projected
The finance net-revenue view by 04:00showcase estate02:00 to 04:00 every nightA control-total mismatch; a certified view back in DraftThe finance lead and data engineering; ServiceNow records the status change
The 3PL tracking feedshowcase estateEvery 15 minutes, with 15 minutes of slackThe partner API unavailableSlack #data-ops when the lag passes the limit
A worked example

What happens when the data is wrong at 2 am

One night on the showcase estate, minute by minute.

02:14
A quality rule fails847 negative values are found in WMS.DISPATCH_RECORDS.FULFILLED_QTY, the quantity sent per dispatch. A dispatched quantity below zero fails the rule, and 847 rows in one batch mark the whole batch as wrong.
02:14
Three pipelines pauseotif_nightly, inventory_refresh and 3pl_enrichment all read the warehouse feed. Each one stops at its last checkpoint and keeps its place. The 847 rows become exception records with the rule and the batch attached.
02:14
The owner is alerted, 340 ms laterA card reaches Slack #data-ops with the rule, the failing rows, the upstream step and the three paused pipelines. The on-call engineer reads the full context on a phone.
02:51
The cause is foundWMS release 2.14.0 changed the sign of the quantity on one carrier feed. The feed is corrected.
02:58
The pipelines resume from their checkpointsEach pipeline continues from the step where it stopped. The 841K events that arrived during the hold are replayed in order, and each event is applied once.
03:14
otif_nightly completesThe certified view v_otif_daily is refreshed and the supply-chain report is produced. The 84 subscribers of the view receive the usual result.
06:30
The deadline is metThe OTIF figures are on the board with 3h 32m to spare. 44 minutes passed between detection and resume, with 0 manual restarts.

A paused job keeps its place and its checkpoint. A checkpoint is the saved position of the last completed step. When the data is fixed, the job continues from there, so the 841K events that arrived during the hold were applied once, in order.

The hold reached only the pipelines that read the warehouse feed. The finance pipeline that night read other tables and finished on time at 03:48.

The 847 rows kept their full context as exception records, with the rule that failed and the batch they came from. What happens to a row that fails a rule →

Any source

The same hold applies to any source. A batch from SAP, from Oracle, from a file or from a webhook that fails a quality rule holds the pipelines that depend on it, and they resume from their checkpoints once it is fixed.

Building a flow

The visual flow builder

Analysts draw the flow as boxes and arrows. Engineers review it. It runs as an Airflow DAG.

A flow is drawn on the canvas as boxes and arrows. Each box is a task, and each arrow says which task runs after which. The drawing runs as a DAG in Apache Airflow. A DAG is a flow chart of tasks and the order they run in; the letters stand for directed acyclic graph, which means the arrows point one way and the chart has no loops.

Business users build the flow on the canvas with readable labels, such as every weekday at midnight. Engineers review it, add Python where it is needed, and keep the tests. On the showcase estate a supply-chain analyst built the OTIF flow, and data engineering checked it with five golden tests over 218K rows.

SAP changes00:02 · doneWMS ingest01:00 · doneQuality checkRULE-019 · passedOTIF calculation02:58 · 4m 12sCertified view03:02 · 12m 08sBoard KPISC reportOTIF API v2DEADLINE 06:30
The otif_nightly flow on the showcase estate as it ran on the night of the hold. SAP changes and the warehouse ingest feed a quality check, then the OTIF calculation, the certified view, and the three outputs that read it. The dashed line is the 06:30 deadline.
Airflow

Works with Airflow and your enterprise scheduler

You keep Airflow. Lima tasks run inside your DAGs, beside the tasks you already have.

Backbone runs on Apache Airflow, the open-source orchestrator most data teams already use. Lima pipelines appear as tasks inside your DAGs. One DAG can run an SAP extract, an Oracle extract, a quality check, a dbt transformation and a BI refresh in sequence, under one retry policy and on one run dashboard. dbt is a tool modelling teams use to write transforms in SQL; a BI refresh rebuilds the reporting dashboards.

An enterprise scheduler can stay in charge of the company calendar. It starts Lima jobs through the API, the interface a system publishes for other programs to call, or through a native task, and it receives the status and the completion event back through webhooks.

Backbone runs on the Airflow 3 line. The dated support statement is on the Standards page.

Lima · SAP extracttables · CDS views · deltaLima · Oracle extractJDBC · last-update columnLima · quality checkpauses on a bad batchdbt transformationyour taskBI refreshyour taskone DAG · one retry policy · one run dashboard · Lima tasks in blue, your tasks in white
One Airflow DAG on the showcase estate. The two extracts and the quality check are Lima tasks; the dbt transformation and the BI refresh are the team’s own tasks. All five share one retry policy.
Monitoring

Watching a run

One dashboard shows every pipeline: its state, its deadline, its latest run, and what it is held on.

An alert carries its context: the rule that failed, the rows that failed it, the upstream step they came from, and the pipelines held as a result. Alerts reach Slack, Teams, PagerDuty and ServiceNow as structured cards.

Root cause uses lineage. Lineage is the record of which tables each table was built from, captured as the pipeline runs. When a rule fails, the alert lists the downstream subscribers of the affected data. On the night of the hold that list held 84 subscribers.

The dashboard on the right shows every pipeline with its trigger, its deadline, its latest run and its state. A held pipeline shows what it is held on, and its clock records the hold.

Backbone · run dashboard · showcase estate · 48 pipelines
42 running3 held by a rule1 incident2 paused by hand
PipelineStartsDeadlineLatest runState
otif_nightly00:00 daily06:3003:14On time · resumed from checkpoint
sap_cdc_streamon eventunder 2 min1m 48sStreaming
inventory_refreshevery 4 hourssoftheldHeld · hold recorded on the clock
finance_net_revenue02:00 daily04:0003:48On time · 12 min early
3pl_tracking_syncevery 15 min+15 min14m 22sOn time

Alert routes on the showcase estate

SignalSent whenDelivered toShowcase estate
quality.anomalyA quality rule fails on a supply-chain viewSlack #data-ops, as a card with the rule, the fields and the number of downstream subscribers340 ms after the rule fails
sla.riskA run is projected to miss its deadline by more than 15 minutesPagerDuty, with the pipeline, the delay and the deadlineprojected miss > 15 min
anomaly.resolvedThe hold clears and the pipelines resumeSlack #data-opsat resume
cert.statusA certified view changes statusServiceNow, as a recordon each change
product.publishA data product is publishedMicrosoft Teamson each publish
Where this sits

Step five of the six.

Step six sends results back to the system they came from, and that system confirms each write.
Any source.Any target.Any pattern.Any volume.Priced by capacity.HOW THE ENGINE SCALES → /platform/backbone/scale
Terms on this page

Plain meanings.

DAGDirected acyclic graph: a flow chart of tasks and the order they run in. The arrows point one way and the chart has no loops. Apache Airflow runs flows as DAGs.
CheckpointThe saved position of the last completed step of a run. A paused or interrupted job continues from its checkpoint.
Quality rule and quality gateA quality rule checks each row against a condition, such as a quantity of zero or more. A quality gate applies a rule to a whole batch; when the batch fails, the gate holds the pipeline until the batch is fixed.
Run windowThe period in which a job must finish so that the business event it serves can start on time.
Business deadlineThe time of the business event a job serves, such as the 06:00 MRP run. The job is scheduled and watched against it.
Ordered replayAfter a hold, the events that arrived during the hold are applied in the order they arrived, each one once.
MRPMaterial requirements planning: the ERP run that turns demand into supply orders, such as planned orders and purchase requisitions.
LineageThe record of which tables each table was built from, captured as the pipeline runs. It is used to find the cause of a problem and the subscribers affected by it.
Questions

Asked before the first run.

We already run Airflow. Do we replace it?

You keep it. Lima tasks run inside your DAGs with your operators, your retry policies and your deployment. Backbone adds deadlines on the business calendar, pause and resume on a data problem, checkpoint resume with ordered replay, and exception records with owners.

What happens if a job is going to miss its deadline?

Backbone projects the finish time from live progress while the job runs. When the projected finish passes the deadline by more than 15 minutes, the owner is paged through PagerDuty with the pipeline, the delay and the deadline. The alert arrives before the miss, so the owner can act while there is still time.

Who restarts a paused job?

The job restarts itself. When the batch that held it passes the rule again, the hold clears and the job continues from its checkpoint. On the showcase estate the three pipelines resumed at 02:58 with 0 manual restarts. A person can also pause or release a job by hand from the run dashboard.

Can our enterprise scheduler start Lima jobs?

Yes. The scheduler starts a Lima job through the API or a native task and receives the status and the completion event back through webhooks. The company calendar stays where it is, and Backbone keeps the deadline, the checkpoints and the replay for the jobs it runs.

Does a hold on one pipeline stop the others?

A hold stops the pipelines that depend on the held data. Pipelines that read other sources keep running. On the night of the hold, the three pipelines that read the warehouse feed paused, and the finance pipeline, which reads other tables, finished on time at 03:48.

See the night run end to end.

Thirty minutes on your own estate: one pipeline, one deadline, one quality rule. We show the hold, the resume from the checkpoint, and the replay.