EDGEBIC Platform

Import Masks in EDGEBIC: How Your Data Gets In

User Solutions TeamUser Solutions Team
|
9 min read

An import mask is a saved recipe that tells EDGEBIC which kind of record a file contains, what format it arrives in, and how each of your columns maps to a field. Build it once for a recurring file, and every import after that is two clicks. That is how data gets into EDGEBIC by User Solutions, and it is deliberately not a connector.

This post covers the mechanism generically. If you are working from a specific ERP export, the per-system application is on the ERP integration hub and in posts like the JobBOSS integration guide and the Epicor data mapping reference.

Why Masks Instead of Connectors

Every shop's ERP export is different, and so is every shop's ERP. A vendor who ships connectors ships them for the ten systems worth engineering for, and the eleventh shop is out of luck.

Masks invert that. Any system that can produce an Excel or delimited export is a candidate, which includes the systems nobody writes connectors for: a twenty-year-old MRP, a departmental Access database, the spreadsheet a planner has maintained since 2011. You map the columns once, in the application, and that mapping is yours. It survives an ERP upgrade that would break a hard-coded integration, and it is editable by the planner who understands the data rather than by whoever owns the middleware.

This is the honest description of how EDGEBIC integrates: flexible Excel, CSV and database import and export masks, not a certified connector to any named system. The lineage behind it is long. User Solutions has been moving manufacturing data between systems since 1991, including a vendor-recommended Fourth Shift integration completed in five days at Plastilite and long-running work with Macola and AS400 environments at customers including Cummins across 33 locations.

What a Mask Remembers

One mask covers one recurring file shape. It holds:

SettingWhat it does
Entity typeWhich kind of record the file contains
File formatExcel, or comma, semicolon, tab or space delimited
SheetWhich worksheet inside a workbook to read
Header presentWhether row one is headings, or mapping is by column position
Column mappingsEach source column pointed at the field it fills
Conversion factorA multiplier per column, applied before the value is stored
OptionsPer-type behaviour such as update-or-reuse and auto-create

The conversion factor is the small feature that saves the most rework. Source systems very often store setup time in minutes while a scheduler works in hours. Set a factor of 0.016667 on that column and thirty minutes lands as 0.5 hours before it is ever stored, on every row, every week, without anyone editing a file.

What You Can Import

Eight record types appear in the entity picker:

TypeWhat it loadsMatched by
ProductProduct master dataProduct identifier
WorkcenterMachines and stationsWork center identifier
CustomerCustomer masterName
SalesOrderJobs and demandProduct, quantity and date, plus an optional order reference
BORRouting stepsEnd product plus step
ActualsDaily hours and pieces per operationJob, work center and date
PlantHolidayPlant-wide holidaysHoliday name and date
ShiftGlobal shifts with weekly hoursShift name

Matching is not case sensitive. A file row reading WIDGET-A finds the existing product Widget-A and does not rename it. The stored name is whatever arrived first.

Sales orders have one grouping behavior worth knowing: when the optional order reference column is filled, rows sharing a reference are grouped under one sales order and their jobs are auto-numbered by line. Rows with a blank reference each become a standalone job.

Routings deserve their own treatment because their steps must be linked to each other, which cannot happen row by row. That is how EDGEBIC imports routings in two passes.

Four Outcomes, Every Row

Every row in your file produces exactly one outcome, and the vocabulary is worth learning because it is what the result dialog reports.

  • Created: no matching record existed, so a new one was written.
  • Updated: a match was found and updates were enabled, so it was changed.
  • Reused: a match was found and updates were off, so it was left exactly as it is.
  • Failed: something was wrong with the row, and the reason is recorded.

Nothing is half-imported silently. The result dialog shows the counts and a grid with one line per row, and a per-run log file records every row including the bookkeeping the dialog hides.

The Reused outcome is the default for a reason. Re-running a master-data file is a safe, boring operation when updates are off: existing records are untouched and only genuinely new ones are added. Turn updates on for the runs whose purpose is changing values, such as a price refresh, and leave it off the rest of the time.

Blank Cells and the Zero Trap

On an update, a blank cell in the file falls back to the value already in the system rather than wiping it. That guard exists so a half-populated export cannot erase planner-set values.

The trap is not blanks, it is zeros. A column of zeros is a real value, and it will be written. This is why the practical discipline is to map only the columns your run is meant to change: a price refresh mask maps the identifier and the price and nothing else.

One asymmetry to remember: the blank-cell guard applies on updates, not on creates. A new record created from a row with a blank cost field gets a cost of zero, because a brand-new record has no prior value to fall back on. That is intentional, and it is a good argument for checking a small sample after a first bulk load.

What an Import Does Not Do

It does not schedule. Imported sales orders appear as jobs ready to schedule and nothing lands on the Gantt until you run the scheduler. Import forty orders at 08:00 and at 08:01 you have forty new jobs and an unchanged plan. Run the scheduler at 08:05 and they are placed around everything already on the floor. That separation is what keeps a bulk load from quietly rearranging work in progress.

It does not touch running jobs. Scheduled jobs carry their own frozen copy of the routing they were planned with, so a routing re-import does not re-route work in progress. The imported routing applies to new orders, and to an existing job only if you deliberately reschedule it against the current standard routing.

It does not round-trip with grid exports. Job View, the routing grid, work center details and every report can export to Excel, and those exports are snapshots of what you see, including colors and legends. They are for sharing and analysis. They are deliberately not the import file format, and a Job View export cannot be re-imported.

The Per-Run Log

Every run writes one log file with a header (time, mask, entity type, file, sheet), one line per row with its outcome, and a summary trailer. The result dialog links straight to it.

Read the log after any run with failures. The dialog gives you counts; the log gives you row numbers and exact reasons, which is the difference between "eleven rows failed" and "rows 14, 47 and 102 have a blank identifier". Log files accumulate one per run and stay until you delete them, which makes them a usable audit trail of what entered the system and when.

Where Masks Fit in an Implementation

The typical first week runs masks in dependency order, because a routing cannot reference a work center that does not exist yet:

  1. Products, then work centers, then customers.
  2. Shifts and plant holidays, so the work centers have calendars.
  3. Routings, which reference the products and work centers above.
  4. Sales orders, which become jobs.
  5. A scheduling run, which is the first moment anything appears on a Gantt.
  6. A plant-wide diagnostics sweep, before anyone trusts the result.

That last step is the one people skip and the one that pays most. An import changes hundreds of records at once, and a single mapping error repeats across every row of the file. How to run and read the anomaly report is the two-minute routine, and it is exactly what catches a missing conversion factor before anyone schedules against sixty-fold setup times.

Next Steps

To build your first mask field by field, read how to build an import mask. For the routing import's two-pass mechanics and its upsert rules, read how EDGEBIC imports routings in two passes. For the errors that cost the most time, import mask mistakes.

If you are moving off spreadsheets entirely, from Excel to APS is the migration view, and ERP data integration best practices is the wider discipline. The full platform map is the complete EDGEBIC guide and the EDGEBIC hub.

Bring your ERP export to a demo, exactly as it comes out. Contact US and we will map it live.

An import mask is a saved recipe for one recurring file. It remembers which kind of record you are importing, what file format it arrives in, whether the first row is headings, how each column in your file maps to a field, and any unit conversion to apply on the way in. You build it once, and every later run of the same file shape is select the mask and click Do It.

Products, work centers, customers, sales orders (which become jobs), routings, shop-floor actuals, plant holidays, and shifts. Each type has its own mandatory columns and its own natural key for matching existing records. Routings are the most involved because their steps have to be linked to each other, which the import does automatically in a second pass.

No. Imports change data, never the plan. Imported sales orders appear as jobs ready to schedule and nothing lands on the Gantt until you run the scheduler. That separation is deliberate: it means a bulk load can never quietly rearrange work in progress, and you choose the moment the new demand enters the plan.

No. EDGEBIC integrates through flexible Excel, CSV and database import and export masks rather than a native connector to any named ERP. Any system that can produce an export is a candidate, which is why the approach covers systems no vendor writes connectors for. What you build is a mapping you own, kept in the application, and it survives an ERP upgrade that would break a hard-coded integration.

Expert Q&A: Deep Dive

Q: Our ERP export has 40 columns and half of them mean nothing to a scheduler. Do we have to clean the file first?

A: No, and cleaning it is the wrong instinct because it turns a two-click weekly routine into a manual step somebody will eventually skip. Map only the columns that matter and leave the rest unmapped: unmapped columns are simply not read. A product load typically needs the identifier plus a handful of fields, and a routing load needs the end product, the step, whether the step is an operation, and the hours. The mask is where you absorb the mismatch between what your ERP exports and what a scheduler needs, and doing it there means next week's file can arrive untouched.

Q: We import the same product file weekly. Will re-importing overwrite the descriptions our planners have edited by hand?

A: Only if you ask it to, and even then blank cells are safe. With updates switched off, which is the default, existing records are counted as reused and left exactly as they are. With updates on, matched records are updated, but a blank cell in the file falls back to the value already in the system rather than wiping it. The trap is not blanks, it is zeros: a column of zeros is a real value and will happily be written. The practical rule is to map only the columns your run is meant to change, which is why a price refresh mask usually maps two columns and nothing else.

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