Takes a produced batch from complete inspection results through QA review to a usage decision, sets the batch status in the ERP and produces the certificate of analysis.
Tables are read in place through the native Snowflake connector: the app sends only the filter and the columns it needs, Snowflake returns the matching rows. The Backbone landing model (RAW, CONFORMED and HISTORY schemas) is the usual source, so history and aggregates are already prepared.
| Object | Read from | Fields the app uses | Freshness |
|---|---|---|---|
| Batch | CONFORMED.BATCH | batch_id (batch) · material_id (material) · expiry_date (expiry) · production_date (produced) | prepared by the Backbone; refreshed on its schedule |
| Inspection lot | CONFORMED.INSPECTION_LOT | result (result) · usage_decision (decision) · origin (origin) · lot_id (lot) | prepared by the Backbone; refreshed on its schedule |
| Production order | CONFORMED.PRODUCTION_ORDER | order_id (number) · material_id (material) · order_qty (qty) · start_date (start) | prepared by the Backbone; refreshed on its schedule |
| Quality notification | CONFORMED.QUALITY_NOTIFICATION | notification_id (number) · type (type) · material_id (material) · vendor_id (vendor) | prepared by the Backbone; refreshed on its schedule |
| Stock position | CONFORMED.STOCK_POSITION · HISTORY.STOCK_DAILY | material_id (material) · plant (plant) · storage_location (sloc) · on_hand_qty (on hand) | prepared by the Backbone; refreshed on its schedule |
In plain words: An inspection lot from production (origin 04) whose results are recorded for every characteristic and whose usage decision is still open.
The criterion runs in Snowflake through the data handler, so only the matching rows return. The editor shows the rows it selects, and their count, as it is written.
# start criterion in Snowflake fields origin = '04' and result = 'recorded' and usage_decision = '' # the same criterion in canonical fields {lot.origin} = '04' and {lot.result} = 'recorded' and {lot.decision} = ''
Decisions are recorded in a Lima-owned table in Snowflake through stage, COPY INTO and MERGE, so analytics see them next to the history. The operational write goes to the system of record through its released interface, and the app records the acknowledgement. For this app the operational change (usage decision posted as accept or reject through the inspection lot interface, with the stock posting from quality inspection to unrestricted, blocked or scrap) goes to SAP S/4HANA or Oracle Fusion through its released interface, and the pair pages for those systems show the exact call.
| Object | What changes | Interface |
|---|---|---|
| Inspection lot | usage decision posted as accept or reject through the inspection lot interface, with the stock posting from quality inspection to unrestricted, blocked or scrap | MERGE into LIMA.APP_DECISIONS |
| Batch | batch status set to released or blocked; certificate of analysis attached to the batch | MERGE into LIMA.APP_DECISIONS |
Each write stores the identifier Snowflake returns beside the decision, the person and the time, so the log answers who changed what, and the reconciliation shows it arrived.
Snowflake roles and row-access policies are mapped to Lima access policies once, so a person sees the same rows in the app that they see in a worksheet.
This app reads batch from Snowflake because the screens need history at scale: months of rows, aggregates by period, several versions. The Backbone lands the objects in the conformed model and refreshes them on a schedule, and the handler reads them in place with the filter and the columns pushed down. The person's grants in Snowflake decide what they see.
The operational rows the person acts on can come live from the ERP in the same app: one handler per object per system, and a screen that shows both.
The screens read through handlers that leave the rows in Snowflake. The conformed tables it reads were landed there by the Backbone from the ERP; the app reads them there.
The prerequisites above: an integration identity with read rights on the objects listed and write rights on the interfaces named, connectivity, and the scopes agreed with the process owner.
Yes. The screens, criteria and roles stay; the handlers are re-bound to the other system's objects, and the app's other system pages show them.
Bring the process and the systems it touches. In the first session we register the data handlers, draw the levels or the lanes and run the first screen on your live rows.