- Home
- Blog
- ERP Integration (EDGEBIC)
- IQMS / DELMIAworks to EDGEBIC: The Data Mapping Re…
IQMS / DELMIAworks to EDGEBIC: The Data Mapping Reference
Mapping IQMS / DELMIAworks data into EDGEBIC is a column-mapping exercise rather than a development project: you export items, work centers, routings, open orders, and optionally logged hours to Excel or CSV, then drag each source column heading onto the matching EDGEBIC field once and save it as a reusable import mask. This reference lists what maps to what, which columns are mandatory, how cycle-time conversion and blank cells behave, and what every row outcome means when a run finishes.
EDGEBIC by User Solutions integrates with DELMIAworks (formerly IQMS EnterpriseIQ) through those masks rather than a certified connector, so nothing is installed inside the ERP and nothing enters its upgrade path. If you have not read the end-to-end version, start with the complete IQMS / DELMIAworks integration guide. This post is the lookup table you keep open while building masks.
The load order
Import in dependency order. Later files reference records that earlier files created.
| # | DELMIAworks export | EDGEBIC entity type | Depends on |
|---|---|---|---|
| 1 | Items | Product | Nothing |
| 2 | Work centers | Workcenter | Nothing |
| 3 | Routings / operations | BOR (bill of routing) | Items and work centers |
| 4 | Open orders | SalesOrder | Items |
| 5 | Logged hours (optional) | Actuals | Scheduled jobs |
Two entity types have no DELMIAworks origin and are built from a spreadsheet you write yourself: Shift (one row per shift with a start and end pair per weekday, a blank pair meaning the day is off) and PlantHoliday (closures by name and date). These two define the calendar every date is computed against, so they deserve ten careful minutes rather than five.
Auto-create is on by default, so a routing file naming a work center that has not been imported yet creates it on the fly. That is a useful safety net and a poor strategy: an auto-created work center has a name and nothing else, meaning one press, no shift assignment, and no efficiency. Load the work center file properly first.
Items to Product
| EDGEBIC target field | Mandatory | Source column |
|---|---|---|
Product_Name | Yes | The item number. Natural key, matched case-insensitively |
Description | Descriptive text | |
UOM | Unit of measure | |
Unit_Cost, Unit_Price, Lead_Time, Category | Optional planning and quoting attributes | |
Type | Raw Material, Work In Process, or Finished Good | |
Quantity_On_Hand, Supplier, Is_Active | Optional descriptive columns |
Only the item name is required. Everything else can arrive later through a second, narrower refresh file, because blank cells preserve existing values on an update run. Watch identifier formatting across exports: matching ignores case but not a cavity or tool suffix, so decide once what the scheduling identifier is and render it the same way everywhere.
Work centers to Workcenter
This is the file where scheduling accuracy is won or lost, because it carries capacity.
| EDGEBIC target field | Mandatory | What it drives |
|---|---|---|
Name | Yes | Natural key. Routing steps match on it |
Number_Of_Instances | How many identical presses the bank holds. Blank defaults to 1 | |
Capacity, Efficiency | Rated capacity and the efficiency applied to it | |
Setup_Time_Hours | Default setup, overridden per routing step where present | |
Hourly_Rate | Cost rollups | |
Is_Bottleneck | Marks the constraint so the engine can anchor around it | |
One_Per_Day_Flag | One job per press per day, for long-tooling-change centers | |
Use_Global_Shifts | Calendar assignment | |
Pieces_Per_Hour, Min_Batch_Size, Max_Batch_Size | Rate-based capacity and batching limits | |
Is_Active, Color, Type | Housekeeping and Gantt color |
Number_Of_Instances is the highest-value column on the page and the one most DELMIAworks exports do not carry, because ERP data models generally describe a press bank as a capacity figure rather than a count of machines. A bank of two identical presses imported with one instance produces a plan roughly twice too long, and it fails quietly: nothing errors, the dates are simply wrong. Fill it deliberately for every multi-press bank. The arithmetic is in how EDGEBIC calculates work center capacity.
If your export expresses capacity as an available-hours figure that already embeds a press count, do not carry that number into Capacity unchanged while also setting instances, or you will count the same capacity twice. Pick one representation: instances plus the shift calendar is the one the engine reasons about best.
Machine pools and changeover families have no export column
Two of the settings that most shape a molding schedule are configured inside EDGEBIC rather than imported. A work center group is a named pool of interchangeable presses: a routing step bound to a group re-evaluates every member on each reschedule, picks by strategy (earliest completion, primary first, or earliest start), and applies a per-member efficiency factor so a slower press is chosen only when it still finishes first. A started run keeps the press it started on, because recorded work is never moved.
The setup matrix is the second, and for a plastics plant it is the one that pays. Color and material changeover times live there as family-to-family entries, because no routing column can say white to black costs four hours while black to white costs one. Import the presses as ordinary work centers, then create the group and the setup families inside EDGEBIC. See how to create work center groups and what a setup family is.
Routings to BOR
| EDGEBIC target field | Mandatory | What to put in it |
|---|---|---|
End_Prod | Yes | Item number this routing builds |
Sub_Prod | Yes | Work center name (operation row) or component item (material row) |
Op_Flag | Yes | True for an operation, false for a material or component |
No_Req | Yes | Hours required per unit (a cycle time in seconds converts here) |
Seq_No | Operation sequence, in gaps of 10 | |
Next_Seq | Leave blank; chaining happens automatically | |
Setup_Time | Base setup hours at this step | |
Queue_Time | Buffer hours before the step may start | |
Flow_Step, Transit_Days | Overlap between steps, and transport time | |
Parallel_Op | Parent step's work center name for parallel or alternate steps | |
Res_Mult | Applicable press instances for this step |
Op_Flag is the field people get wrong first. True means "this row is an operation running on a work center." False means "this row is a component consumed at this point in the routing." Mixing them produces a routing full of work centers that are actually parts, and it is visible immediately in the graphical designer.
No_Req is where a molding cycle lands. If your export quotes a per-piece cycle in seconds, put 0.000278 on that column and the value converts to hours during import. The base Setup_Time here is the machine-independent setup; the sequence-dependent color and material portion lives in the setup matrix, not this column.
Why the import takes two passes
A routing cannot be written row by row, because op 10 must point at op 20 and op 20 does not exist yet. So the import runs in two passes. Pass one validates each row, resolves or creates the items and work centers it names, and buffers the row. Pass two groups the buffer by end product, sorts by sequence number, writes the steps, and wires the chain: 10 to 20, 20 to 30, and the terminal step to the finished item so the routing renders connected. Check that visually after the first import: a routing missing its final link draws as a chain floating free of the item it builds.
Two rules follow from the same mechanism. All of one item's steps must travel in one file, because a run wipes and recreates that item's steps on first reference, and splitting across two runs means the second wipe deletes the first run's work. And re-importing is safe for running orders, because every scheduled job carries a frozen snapshot of the routing it was planned with.
Orders to SalesOrder
| EDGEBIC target field | Mandatory | Source |
|---|---|---|
Product_Name | Yes | Item being built |
Qty | Yes | Order quantity |
Ref_No | Yes | Order number: shared references group into one order, jobs auto-number {Ref}-{line} |
Job_Date | Yes | Release or start date |
Due_Date, Order_Date, Priority | Promise, entry, and ranking | |
Customer_Name | Auto-created when missing | |
Unit_Price, User_Notes | Optional |
Two mask options control the date logic when the export carries only one date: one treats the job date as the due date, the other derives the job date backward from the due date. Choose the one matching how your export is built, once, on the mask.
Actuals
Job number, work center name, and actual date are mandatory (Job_Number, WorkCenter_Name, Actual_Date). Hours and pieces (Actual_Hours, Actual_Pieces) are both optional, and either can be derived from the other using the operation's rate, which suits a plant that counts pieces off the press more naturally than hours.
The import always overwrites the days a file carries, so re-running a corrected extract fixes the numbers rather than doubling them. Days a file does not mention are preserved unless you explicitly ask for them to be cleared. Actuals import last, because each row has to find an operation on a job that is already scheduled.
Conversions, blanks, and zeros
| Situation | Behavior |
|---|---|
| Cycle time in seconds | Conversion factor 0.000278 on that mask column |
| Minutes in the export | Conversion factor 0.016667 |
| Hours quoted per 100 pieces | Conversion factor 0.01 |
| Blank cell on an update | Existing value preserved |
| Zero in a cell on an update | Zero is written: it is a value, not a blank |
| Unmapped column | Ignored entirely |
| Mandatory field unmapped | Run aborts before reading any row |
| One bad row | Fails alone and the run continues, unless you choose to abort on first error |
Different columns in the same file can carry different factors, so a routing export mixing per-piece cycle seconds with per-changeover setup minutes lands correctly in a single run.
Reading the outcomes
Every row resolves to Created, Updated, Reused, or Failed. Reused is the default for a record that already exists, so a weekly item file of 5,000 rows reporting Created 11, Reused 4,989 is the desired result rather than a failure. When counts look wrong, the per-run log file carries one line per row with the exact reason for every failure.
What import cannot bring, and why it matters
The settings that most differentiate a molding schedule have no column in any ERP export: the sequence-dependent setup matrix for color and material changeovers, operator skills, work center group strategies, bottleneck anchoring, and lot streaming transfer batches. Those are configured once in EDGEBIC and then apply to every imported order afterward. The EDGEBIC product overview maps the engine, and the ERP integration architecture explains why one mask design serves every ERP.
The Plex and E2 Shoptech references show how little the method changes from one platform to the next, and the ERP scheduling add-on page frames the category.
Each entity type has a short mandatory list and everything else is optional. Items need an item name. Work centers need a name. Routings need end product, step name, an operation flag, and hours required. Orders need product, quantity, a reference, and a job date. Actuals need job number, work center name, and the actual date. If a mandatory field is unmapped in the mask, the run aborts before reading a single row.
Use a conversion factor on that mask column. A cycle time in seconds becomes hours with 0.000278, and a setup time in minutes becomes hours with 0.016667. The multiplication happens before the value is stored, so the file needs no pre-processing. Factors are saved with the mask, which makes the conversion permanent, repeatable, and auditable through the per-run log. One file can carry cycle seconds and setup minutes in different columns and land both correctly.
Dependency order: items first, then work centers, then routings, then open orders, then actuals. Routings reference both items and work centers, and orders reference items, so loading upstream data first stops the auto-create behavior from inventing thin placeholder records. Auto-create is on by default and will fill gaps, but a record created that way carries only the name it was given.
They go in the sequence-dependent setup matrix inside EDGEBIC, not in any export column, because the changeover cost depends on what ran immediately before. You group items into setup families by color and by material, then set the changeover time between families once. The routing export supplies the item, machine, hours, and a base setup; the family-to-family changeover intelligence is EDGEBIC configuration that applies to every imported order afterward.
Expert Q&A: Deep Dive
Q: Our item numbers come out of DELMIAworks with a cavity or tool suffix on some exports and without it on others. Will that create duplicate items?
A: Yes, if the suffix is genuinely in the string in one file and absent in another. Natural-key lookups ignore case, so CAP-BLK and cap-blk resolve to the same record, but CAP-BLK and CAP-BLK-4CAV are different strings and will create two items. Decide once what the scheduling identifier is: if two cavity or tool variants run genuinely different routings, give each its own identifier so a routing import wipes and recreates the right one; if they share a routing, strip the suffix on export so both resolve to one item. Run a distinct-values check across your item file and routing file before the first import, because a mismatch caught then costs minutes while the same mismatch caught after routings load means a routing chain pointing at an item with no demand.
Q: We run banks of identical presses. DELMIAworks records each bank as one work center. How do we get the schedule to treat the presses as separate machines?
A: Set the instance count on the work center row to the number of identical presses in the bank, in the Number_Of_Instances column. That single field is the difference between a plan that assumes one press and a plan that runs two or three side by side, and it is the column most ERP exports do not carry because they describe a bank as a capacity figure. With the count set, the engine plans that many simultaneous runs, load balancing across them or dedicating one press per job per day when a tooling change makes that the right rule. If you want the bank treated as a pool the engine re-shops on every reschedule, import the presses as separate work centers and group them inside EDGEBIC instead.
Frequently Asked Questions
Ready to Transform Your Production Scheduling?
User Solutions has been helping manufacturers optimize their production schedules for over 35 years. One-time license, 5-day implementation.

User Solutions Team
Manufacturing Software Experts
User Solutions has been developing production planning and scheduling software for manufacturers since 1991. Our team combines 35+ years of manufacturing software expertise with deep industry knowledge to help factories optimize their operations.
Share this article
Related Articles
Connecting EDGEBIC to Your ERP Database With a SQL Source
How to point a scheduled EDGEBIC integration at a read-only ERP query instead of a file: testing the connection, previewing columns, checking the mask fits, and the stored-password rule that catches most teams out.
EDGEBIC ERP Integration: The Complete Guide
How EDGEBIC integrates with any ERP: eight import masks, three source options, a documented data mapping, and the weekly rhythm that keeps a finite capacity schedule current.
Closing ERP Work Orders That EDGEBIC Still Thinks Are Open
Your ERP closing a work order is invisible to EDGEBIC. There is no status column on the order mask, and a job whose every step is done is not closed automatically. Here is the closing pass that keeps your numbers honest.
