ERP Integration (EDGEBIC)

JobBOSS to EDGEBIC: The Data Mapping Reference

User Solutions TeamUser Solutions Team
|
10 min read

Mapping JobBOSS data into EDGEBIC is a column-mapping exercise, not a development project: you export parts, work centers, routings, open jobs, and optionally actuals 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 unit conversion and blank cells behave, and what each row outcome means when the run finishes.

EDGEBIC by User Solutions integrates with JobBOSS through those import masks rather than a certified connector. If you have not read the end-to-end version yet, start with the complete JobBOSS integration guide; this post is the lookup table you keep open while you build the masks.

The five files and their order

Import in dependency order. Later files reference records the earlier ones created.

#JobBOSS exportEDGEBIC entity typeWhy it comes here
1Parts / itemsProductRoutings and orders both reference parts by name
2Work centersWorkcenterRouting operation steps land on these
3RoutingsBOR (bill of routing)Needs parts and work centers to exist
4Open jobs / ordersSalesOrderReferences the part being built
5Labor / actuals (optional)ActualsReferences jobs that are already scheduled

Two more entity types matter for a first load but do not come from JobBOSS: Shift (your working calendar, one row per shift with a start/end pair per weekday) and PlantHoliday (plant-wide closures by name and date). Build those from a plain spreadsheet you write yourself.

Parts to Product

EDGEBIC target fieldMandatoryWhat to put in it
Product_IdYesThe JobBOSS part number. This is the natural key, matched case-insensitively
Product_NameLonger name if your export carries one separately
DescriptionPart description
UOMEach, LB, FT, whatever your export uses
Unit_PriceSell price, if you want it visible for quoting
Lead_TimePurchase or manufacturing lead time
Category, Size, Weight, Country_Of_OriginOptional descriptive columns

The one column you cannot skip is the part number. A blank part number cell fails that row with a recorded reason and, by default, the run continues through the remaining rows.

Work centers to Workcenter

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

EDGEBIC target fieldMandatoryWhat to put in it
Workcenter IdYesThe JobBOSS work center code. Natural key
Workcenter NameFriendly name for the Gantt and reports
Number_Of_InstancesHow many identical machines this center holds. Defaults to 1 when blank
Setup_Time_HoursDefault setup for the center, overridable per routing step
Capacity, EfficiencyRated capacity and the efficiency percentage applied to it
Hourly_RateFeeds cost rollups
Is_BottleneckFlags the constraint so the engine can anchor around it
One_Per_Day_FlagOne job per machine per day, for centers with long changeovers
Use_Global_Shifts, Shift_NamesWhich calendar this center runs on
Is_Active, Color, TypeHousekeeping and Gantt colors
Min_Batch_Size, Max_Batch_SizeBatching limits where they apply

Number_Of_Instances is the field most JobBOSS exports do not carry, because ERPs typically model a work center as one capacity number rather than a count of machines. Fill it by hand for any center that is really a cell of three or four identical machines. Getting it right is the difference between a plan the shop can run and a plan that quietly assumes one mill does the work of four. The general principle behind that is covered in finite versus infinite capacity scheduling.

Routings to BOR

EDGEBIC target fieldMandatoryWhat to put in it
End_ProdYesThe part number this routing builds
Sub_ProdYesThe work center id for an operation step, or the component part number for a material step
Op_FlagYesTrue for an operation step, false for a material or component step
No_ReqYesHours required per unit at this step
Seq_NoOperation sequence: use gaps of 10 (10, 20, 30)
Next_SeqLeave blank and let the chaining happen automatically
Setup_TimeSetup hours for this step at this work center
Queue_TimeBuffer hours before the step can start
Flow_Step, Transit_DaysOverlap and transport between steps
Parallel_OpThe parent step's work center name, for parallel or alternate steps
Alt_TypeParallel-Independent (default), Parallel-Dependent, or Alternative
Res_MultNumber of applicable machine instances for this step
Fam_DeptDepartment assignment for auto-created work centers

Op_Flag is the field people get wrong first. A true value says "this row is an operation running on a work center". A false value says "this row is a component consumed at this point in the routing". Mixing them up produces a routing full of work centers that are actually parts, and it shows up immediately in the graphical designer.

How sequence wiring actually happens

A routing import runs in two passes, because step 10 cannot point at step 20 before step 20 exists. Pass one reads and validates every row, auto-creates any part or work center the file names that is not in EDGEBIC yet, and buffers the rows. Pass two groups the buffered rows by end product, sorts them by sequence number, writes them, and then wires the chain: 10 to 20, 20 to 30, and the terminal step to the finished product so the routing renders as one connected flow.

That last link matters more than it sounds. Without it, the routing designer draws a chain of operations floating unconnected to the part they build. Keeping the automatic chaining option on (it is on by default) and leaving Next_Seq blank produces the connected version every time.

Open jobs to SalesOrder

EDGEBIC target fieldMandatoryWhat to put in it
Product_Id(BOR)YesPart number being built
QtyYesOrder quantity
Job_DateYesRelease or start date
Sales_Order(Ref#)Order reference: rows sharing one reference group under a single sales order
Job_NumberYour JobBOSS job number, if you want it carried across
Due_Date, Order_DatePromise and entry dates
Customer_NameAuto-created if it does not exist yet
Priority, Unit_Price, User_NotesOptional

When Sales_Order(Ref#) is filled, all rows sharing a reference group under one sales order and their jobs auto-number as {Ref}-{line}. Multi-line orders therefore stay together instead of scattering into unrelated jobs. Rows with a blank reference each become a standalone job.

Actuals

EDGEBIC target fieldMandatoryWhat to put in it
Job_NumberYesMust match a job already scheduled in EDGEBIC
WorkCenter_IdYesMust match the work center on that job's operation
Actual_DateYesThe day the work happened
Actual_Hours, Actual_PiecesEither or both. The missing one is derived from the operation's rate
CompleteA truthy value marks that operation finished
Actual_StartExplicit start, otherwise the earliest imported date is used

An actuals row can only find its home if the job is already scheduled, which is why actuals come last. The import always overwrites the days the file carries, so re-importing the same file never double-counts and a corrected timesheet file simply fixes the earlier numbers.

Conversion factors

From, toFactor
Minutes to hours0.016667
Seconds to hours0.000278
Already in hoursleave empty

The factor lives on the mask row, applied before the value is stored. Non-numeric cells pass through untouched.

Blank cells, zeros, and re-imports

Three behaviors govern every re-import, and they are worth memorizing:

  • On an update, a blank cell preserves the existing value. A price-refresh file carrying only part number and price changes prices and nothing else.
  • A zero is a value, not a blank. A column full of zeros writes zeros. Leave a column out of the file rather than filling it with zeros you do not mean.
  • A routing re-import wipes and recreates that part's steps. Every run is therefore idempotent: steps never accumulate. It is also safe for running jobs, because each scheduled job carries a frozen snapshot of the routing it was planned with. This is the same protection described in the reschedule behavior posts: completed work is never moved.

Reading the outcomes

OutcomeMeaningTypical cause
CreatedNew record writtenFirst load, or genuinely new part
UpdatedMatched and changedUpdates enabled on a refresh run
ReusedMatched and left aloneThe safe default for master data
FailedRow rejected, reason recordedBlank key, unparseable date, unmatched job

The result dialog shows the counts. The per-run log file records every row with its outcome and, for failures, the exact reason, which is where you go when a summary count looks wrong.

What does not come from JobBOSS

Some of EDGEBIC's strongest scheduling inputs have no JobBOSS equivalent and are configured directly: work center groups (machine pools that re-shop on every reschedule), the sequence-dependent setup matrix, operator skills and certifications, and bottleneck anchoring. Import gets the skeleton in; those settings are what make the plan match the floor. The EDGEBIC product overview maps the engine, and the ERP integration architecture page covers how the same mask approach works across every ERP.

Once the masks exist, the recurring cost drops to minutes. That rhythm is the subject of the daily JobBOSS and EDGEBIC scheduling workflow, and the questions shops ask before they start are collected in the JobBOSS integration FAQ.

Each entity type has a short mandatory list and everything else is optional. Products need a product id. Work centers need a work center id. Routings need end product, step name, an operation flag, and hours required. Sales orders need product, quantity, and a job date. Actuals need job number, work center id, and the actual date. If a mandatory field is not mapped in the mask, the run stops before reading a single row.

Set a conversion factor of 0.016667 on that column in the import mask. The multiplication happens before the value is stored, so a 30-minute cell lands as 0.5 hours on every run without anyone remembering to convert. Seconds use 0.000278. The factor is saved with the mask, which makes the conversion permanent, repeatable, and auditable through the per-run import log.

Import in dependency order: parts first, then work centers, then routings, then open orders, then actuals. Routings reference both parts and work centers, and orders reference parts, so loading upstream data first keeps the auto-create behavior from inventing thin placeholder records. Auto-create is on by default and will fill gaps, but records created that way carry only the name from the routing file.

Created means a new record was written. Updated means an existing record matched by natural key and was changed. Reused means an existing record matched and was deliberately left alone, which is the default safe behavior. Failed means the row was rejected and the reason is recorded. The result dialog shows the counts and the per-run log file records every row individually.

Expert Q&A: Deep Dive

Q: Our JobBOSS part numbers use inconsistent capitalization between the item master export and the routing export. Will that create duplicate parts in EDGEBIC?

A: No. Every natural key lookup is case-insensitive, so a routing row naming WIDGET-A finds the existing part Widget-A and links to it rather than creating a second record. The stored spelling is whatever landed in the database first, and import never renames on a case mismatch. The practical consequence is that you can leave your exports exactly as JobBOSS produces them. What does create duplicates is a genuine spelling difference (WIDGET-A versus WIDGET_A), so a five-minute pass over distinct part names in the routing file is worth doing once.

Q: We have 400 routings averaging six operations. Do we import them as one file or one file per part?

A: One file with all 2,400 rows is correct, and the reason is mechanical: a routing import wipes and recreates each end product's steps once per run, on first reference to that product. All of a part's steps must therefore travel in the same run. Splitting one part across two runs means the second run's wipe deletes the first run's steps, and you end up with only half the routing. Multiple parts in one file are fine, so the safe rule is simply never to split a single part. The two-pass import then sorts each part's steps by sequence number and wires the chain after every row is read.

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