ERP Integration (EDGEBIC)

Made2Manage to EDGEBIC: The Data Mapping Reference

User Solutions TeamUser Solutions Team
|
11 min read

Mapping Made2Manage data into EDGEBIC is a column-mapping exercise rather than a development project: you export items, work centers, routings, open jobs, and optionally labor hours to Excel, CSV, or a database view, 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 conversions and upserts behave, and what every row outcome means when a run finishes.

EDGEBIC by User Solutions integrates with Made2Manage through those masks rather than a connector, so nothing is installed in the ERP and no integration credential exists to maintain. If you have not read the end-to-end version yet, start with the complete Made2Manage integration guide. This post is the lookup table you keep open while building masks.

A note on column names: Made2Manage report and query output varies by version and configuration, so the source column headings on your export may not match another shop's. That does not matter. You map headings to EDGEBIC fields once per mask, and the EDGEBIC target fields below are the stable side of the mapping. Where a source column is genuinely unclear, map only what you are sure of and leave the rest unmapped; unmapped columns are ignored.

The load order

Import in dependency order. Later files reference records that earlier files created.

#Made2Manage exportEDGEBIC entity typeDepends on
1ItemsProductNothing
2Work centersWorkcenterNothing
3Routings / operationsBOR (bill of routing)Items and work centers
4Open jobsSalesOrderItems
5Labor hours (optional)ActualsScheduled jobs

Two entity types have no Made2Manage origin and come from a spreadsheet you write: 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). Together they define the calendar every scheduled date is computed against, which makes them the ten minutes with the widest effect in the whole load.

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. Good safety net, poor strategy: an auto-created work center carries a name and nothing else, meaning one machine, no shift assignment, and no efficiency.

Reading the file itself

Made2Manage exports have their own habits, and all of them are handled on the mask rather than by editing files.

Export characteristicMask setting
Comma, semicolon, tab, or space delimitedDelimiter selector
Text values wrapped in quotation marksText-enclosed-in-quotes
First row is column headingsHeader present (on)
Raw extract with no headingsHeader present (off), map by column position
Excel workbook with several sheetsSheet name on the mask
Database viewDatabase source on the mask

If a worksheet is renamed later, the reader falls back to the first sheet rather than failing, which is forgiving but worth knowing: re-pick the file on the mask when a workbook's structure changes so the choice stays explicit.

Items to Product

EDGEBIC target fieldMandatorySource column
Product_IdYesThe item identifier. Natural key, matched case-insensitively
Product_Name, DescriptionDescriptive text
UOMUnit of measure
Unit_Price, Lead_Time, CategoryOptional planning and quoting attributes
Size, Weight, Country_Of_OriginOptional descriptive columns

Only the identifier is required. Everything else can arrive later through a narrower refresh file, because blank cells preserve existing values on an update run. Keep the identifier rendered identically across every export: matching ignores case, so BRK-200 finds brk-200, but it does not reconcile a genuine spelling difference or a stray suffix.

Work centers to Workcenter

This is where scheduling accuracy is won or lost, because this file carries capacity.

EDGEBIC target fieldMandatoryWhat it drives
Workcenter IdYesNatural key. Routing steps match on it
Workcenter NameLabel on the Gantt and in reports
Number_Of_InstancesHow many identical machines the center holds. Blank defaults to 1
Capacity, EfficiencyRated capacity and the efficiency applied to it
Setup_Time_HoursDefault setup, overridden per routing step where present
Hourly_RateCost rollups
Is_BottleneckMarks the constraint so the engine can anchor around it
One_Per_Day_FlagOne job per machine per day, for long-changeover centers
Use_Global_Shifts, Shift_NamesCalendar assignment
Pieces_Per_HourRate-based capacity where the center is measured in output
Min_Batch_Size, Max_Batch_SizeBatching limits
Is_Active, Color, TypeHousekeeping and Gantt color

Number_Of_Instances is the single highest-value column here and the one ERP exports rarely carry, because a work center is usually modeled as one resource with a capacity figure. A cell of four identical machines imported as one instance produces a plan roughly four times too long, and it fails quietly: nothing errors, the dates are simply wrong. Fill it deliberately for every multi-machine center; the arithmetic is in how EDGEBIC calculates work center capacity.

Machine pools have no export column

Where machines are genuinely interchangeable, EDGEBIC models a work center group: a named pool whose membership is re-evaluated on every reschedule. A routing step bound to the group picks by strategy (earliest completion, primary first, or earliest start) and applies a per-member efficiency factor, so a slower machine is chosen only when it still finishes first. Operations already started keep their machine, because recorded work is never moved.

None of that exists as an export column. Import the members as ordinary work centers, then build the group inside EDGEBIC: a one-time configuration per pool that changes the schedule more than most imported columns do. The setup path is how to create work center groups.

Routings to BOR

EDGEBIC target fieldMandatoryWhat to put in it
End_ProdYesItem identifier this routing builds
Sub_ProdYesWork center id (operation row) or component item (material row)
Op_FlagYesTrue for an operation, false for a material or component
No_ReqYesHours required per unit
Seq_NoOperation sequence, in gaps of 10
Next_SeqLeave blank; chaining happens automatically
Setup_TimeSetup hours at this step
Queue_TimeBuffer hours before the step may start
Flow_Step, Transit_DaysOverlap between steps, and transport time
Parallel_OpParent step's work center name for parallel or alternate steps
Alt_TypeParallel-Independent, Parallel-Dependent, or Alternative
Res_MultApplicable machine instances for this step
Fam_DeptDepartment for auto-created work centers

Op_Flag is the field most often set wrong on a first load. True means the row is an operation running on a work center. False means the row is a component consumed at that point in the routing, which is exactly how a subassembly is attached to its parent. Getting the flag backwards turns components into work centers, and the graphical designer shows it immediately.

Why the import takes two passes

A routing cannot be written row by row, because step 10 must point at step 20 and step 20 does not exist yet. The import therefore 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 rather than floating free.

Two rules follow. All of one item's steps must travel in one file, because a run wipes and recreates that item's steps on first reference, so splitting one item across two runs means the second wipe deletes the first run's work. And re-importing is safe for jobs in progress, because every scheduled job carries a frozen snapshot of the routing it was planned with.

Open jobs to SalesOrder

EDGEBIC target fieldMandatorySource
Product_Id(BOR)YesItem being built
QtyYesOrder quantity
Job_DateYesRelease or start date
Sales_Order(Ref#)Order reference: shared references group into one order, jobs auto-number {Ref}-{line}
Job_NumberYour Made2Manage job number carried across
Due_Date, Order_Date, PriorityPromise, entry, and ranking
Customer_NameAuto-created when missing
Unit_Price, User_NotesOptional

Two mask options handle the case where an 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. Set whichever matches your export once, on the mask. Carrying the Made2Manage job number into Job_Number is worth doing on day one, because it is the reference your floor already recognizes on a dispatch list.

Labor to Actuals

Job number, work center id, and actual date are mandatory. Hours and pieces are each optional, and either can be derived from the other using the operation's rate. A Complete column marks the operation finished, and an explicit start column overrides the default of using the earliest imported date.

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 ask for them to be cleared. Actuals go last because every row has to find an operation on a job that is already scheduled.

Conversions, blanks, and zeros

SituationBehavior
Minutes in the exportConversion factor 0.016667 on that mask column
Seconds in the exportConversion factor 0.000278
Hours quoted per 100 piecesConversion factor 0.01
Blank cell on an updateExisting value preserved
Zero in a cell on an updateZero is written: it is a value, not a blank
Unmapped columnIgnored entirely
Mandatory field unmappedRun aborts before reading any row
One bad rowFails alone and the run continues, unless you choose strict mode

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 3,000 rows reporting Created 9, Reused 2,991 is the desired result rather than a problem. When counts look wrong, the per-run log file has one line per row with the exact reason for each failure.

What import cannot bring, and why it matters

The settings that most differentiate a schedule have no column in any ERP export: the sequence-dependent setup matrix, operator skills and rosters, work center group strategies, bottleneck anchoring, and lot streaming transfer batches. They are configured once in EDGEBIC and then apply to every imported job afterwards. The EDGEBIC product overview maps the engine, and the ERP integration architecture explains why one mask design serves every platform.

For the questions that come up before a project starts, see the Made2Manage integration FAQ. The Acumatica and SYSPRO references show how little changes from one platform to the next, and the ERP integration hub frames the category.

Each entity type has a short mandatory list. Products need a product id. Work centers need a work center id. Routings need end product, step name, an operation flag, and hours required. Jobs need product, quantity, and a job date. Labor rows need job number, work center id, and the actual date. Everything else is optional, and an unmapped mandatory field aborts the run before any row is read.

Both. An import mask can read an Excel workbook, a delimited text file, or a database source such as a view over the Made2Manage tables. The mapping works the same way in every case: you point the mask at the source, confirm the delimiter or sheet, and drag each source column onto the matching EDGEBIC field. A database view is the lowest-maintenance source because the column names stay stable.

Dependency order: items first, then work centers, then routings, then open jobs, then labor. Routings reference both items and work centers, and jobs reference items, so loading upstream data first stops the auto-create behavior from inventing thin placeholder records. Auto-create is on by default, but a record it creates carries only the name the file gave it.

Expert Q&A: Deep Dive

Q: Our setup time is quoted per job, not per piece, and our run time is per piece. Does one mask handle both conventions in one routing file?

A: Yes, because unit conversion is set per column, not per file. The setup column and the run column are two separate mappings on the same routing mask, and each carries its own conversion factor. If setup is a flat per-job figure in hours it maps straight to the setup field with no factor, while a run time quoted per 100 pieces takes a factor of 0.01 to become per piece. The engine treats setup as a once-per-operation cost and run as per-unit, which matches how a Made2Manage router is built, so the two never get blended even though they ride in the same row.

Q: We build assemblies from subassemblies. Does each level need its own import, and how does EDGEBIC know one feeds the other?

A: Each end item gets its own routing rows in the same file, and the link between levels comes from the material rows rather than a separate import. On the parent's routing, the subassembly appears as a row with the operation flag set false and the subassembly's item identifier in the step-name column, which tells the engine that this component is consumed at that point. The subassembly then has its own operation rows naming its own work centers. One file can carry every level as long as all rows for any single end item travel together, because a routing run wipes and recreates one end item's steps at a time. The result renders in the designer as connected levels rather than as unrelated chains.

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

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.

Let's Solve Your Challenges Together