How to export your data from Sage 100
Sage 100 — formerly MAS 90 and MAS 200 — has a large, long-tenured installed base, which means catalogues with decades of history in them. Its export tool, Visual Integrator, is capable. The complication is that it's a licensed module, so the first question isn't how to export, it's whether you can.
1.Pin the cutover, then pull five things
On-hand is only true at an instant. Agree a freeze point, pull after it, then key the gap in or cycle-count on day one. Take: item master (with status flags), on-hand per item as of a stated time, average cost, customer and vendor master, and open orders if the cutover isn't quiet.
2.Two routes
Route A — Visual Integrator export job (recommended)
- Open
Visual Integrator → Main → Export Job Maintenance. -
Create a job and select the source table from the lookup:
CI_Item— item masterIM_ItemWarehouse— on-hand quantity and cost per warehouseAR_Customer— customersAP_Vendor— vendors
- Move the fields you want from Available Fields using Add Selected Field.
- Set the output to CSV (VI will also write fixed-width, or straight to ODBC).
- Save the job and run it. Jobs are reusable — which is exactly what you want for the second pull at cutover.
Route B — ODBC (when VI isn't licensed)
Sage 100 ships an ODBC driver, SOTAMAS90, giving read-only access to the same
tables. It is slow on wide tables — select only the columns you need rather than
SELECT *.
3.Field mapping into AegisSwift
| Sage 100 source | AegisSwift column | Notes |
|---|---|---|
CI_Item.ItemCode |
sku |
Required. Trim the padding — see gotchas. |
CI_Item.ItemCodeDesc |
name |
Required. |
CI_Item extended description |
description |
|
CI_Item.UDF / UPC field |
barcode |
Often held in a user-defined field — ask. |
CI_Item.StandardUnitOfMeasure |
uom |
|
IM_ItemWarehouse.ReorderPoint |
reorder_point |
Per warehouse. |
IM_ItemWarehouse.AverageUnitCost |
cost |
Not on CI_Item. |
CI_Item.StandardPrice |
price |
|
IM_ItemWarehouse.QuantityOnHand |
quantity |
Per warehouse — sum or split. |
AP_Vendor.VendorName |
vendor |
Matched by name. |
4.Gotchas
Cost lives in IM_ItemWarehouse, not CI_Item
CI_Item is the catalogue; quantities and average cost are per warehouse. You
will be joining these two tables — plan for it rather than discovering an empty cost column
after the export.
Fields are fixed-width and space-padded
Item codes come back padded to the full field width. Trim every string column or your SKUs won't match anything later — not the vendor file, not the re-import, not your barcodes. This is the number-one cause of a failed Sage 100 import.
Sage 50 is a different product
If someone says "Sage", confirm which one. Sage 50 (Peachtree) has no Visual Integrator and
exports via File → Select Import/Export, a far more limited fixed-format tool.
None of Route A applies to it.
Inactive customers are flagged, not deleted
Filter on the status column, or you'll import decades of dormant accounts.
5.What happens on our side
Two spreadsheets — items, and parties — matched on sku and name.
Because VI jobs are reusable, the cutover re-pull is genuinely cheap here: save the job the
first time and re-run it on the day.
AegisSwift costs on a moving average, seeded from
AverageUnitCost. If Sage 100 is running standard costing, expect a small
permanent divergence by design.
6.Questions people ask
Do I need Visual Integrator?
It's the best route, but ODBC via SOTAMAS90 gets the same tables if VI isn't
licensed.
Why is cost missing?
It's in IM_ItemWarehouse. Join it to CI_Item.
How long does this take?
Half a day. Building the job is quick; reconciling padded codes and per-warehouse rows is where the time goes. Expect to import twice.
Bring it into AegisSwift
Real-time inventory, barcode scanning, work orders, and QuickBooks sync from $69/month. 14-day free trial, no credit card, and we'll walk the import with you.
Start a free trial