Lesson 6 of 10 · 9 min

Cleaning and importing your data

Written by Melek Mehrez, founder of FreeMaint · Last reviewed October 11, 2026

Lesson objective

By the end of this lesson, you can prepare a clean import file and import your data in controlled waves (locations and assets, then preventive plans, then spare parts), checking each wave before the next.

Data migration is where many CMMS projects lose the trust of their users. If the first thing technicians see is the same machine listed twice, missing serial numbers and dates in the year 1900, they conclude that the system cannot be relied on, and they go back to their notebooks.

This lesson turns the verdicts of lesson 3 into clean import files and a sequence of small, checked imports. The rule is simple: never import more than you can check.

Prepare the file before you import

Work on a copy of each source, never on the original. Then clean it in the same order every time:

  1. 1

    Remove duplicates

    Sort by name and by serial number, merge the rows that describe the same item, and keep the most complete version.

  2. 2

    Fill in the required fields

    Every row needs what the import requires, usually a name and a location. A row that cannot be completed is not ready to import.

  3. 3

    Standardize formats

    One date format (such as year-month-day), one decimal separator, one unit per column, and the same spelling for the same value: “Line 1” and “line one” become one.

  4. 4

    Apply the coding rule

    Give every asset its code from lesson 5, and use the same codes whenever another file refers to it.

The CMMS's own import template is the safest starting point: its columns, formats and required fields are exactly what the import expects. Copy your cleaned data into it rather than adapting the import to your file.

Import in waves, in the right order

Records refer to each other: an asset sits in a location, a preventive plan points to an asset, a spare part may be linked to the machines that use it. Import in the order of these references, so that whatever a row points to already exists. If your preventive plans list the spare parts they use, import the parts before the plans.

A typical import order
WaveWhatCheck before moving on
1Locations: sites and areasThe tree matches the hierarchy decided in lesson 5
2Assets, with their location and parentCounts per area, and a sample of records opened one by one
3Preventive plansEach plan points to the right asset, with the right frequency
4Spare parts and stockQuantities match the storeroom count, and links to assets are correct
5Open work orders, if anyEach one is assigned, and none duplicates a planned task

Start each wave with a test on ten rows. If the ten rows come out right, import the rest; if not, fix the file, not the records. A large file can be split into several smaller ones, imported one after the other.

Check after each wave

A success message only says that the rows were accepted. It does not say that they are right. Check each wave in three ways:

  • Counts: the number of records created matches the number of rows in the file, area by area.
  • Samples: open ten records at random and compare them with the source, field by field.
  • Shop-floor check: ask a technician to find three machines they know well, on a phone, and to say whether the information is right.

History follows the decision taken in lesson 3. If you migrate a summary of past breakdowns, enter it as closed work orders dated on the day the work was done, so that breakdown indicators such as MTTR start from a real history rather than from zero.

Example

The packaging plant's migration

The plant imports its site and eight areas, then its 40 assets in a single file. The ten-row test reveals that the purchasing list stored install dates as text: the column is fixed in the file and the import runs again, cleanly.

The 150 preventive tasks that survived the audit are grouped into 60 plans and imported in the third wave. A technician checks the plans of the two fillers on a phone and spots a frequency entered in days instead of weeks: the plan is deleted, corrected in the file and imported again before the parts wave starts.

Spare parts follow in the fourth wave: 420 part numbers from the storekeeper's spreadsheet, after removing 35 duplicates. The open work orders come last, each checked against the preventive plans so that none duplicates a planned task. The whole migration takes eight working days spread over three weeks, with a log entry for each import.

Four common mistakes

  • Importing everything in one file, the day before go-live.
  • Fixing records one by one in the CMMS instead of fixing the file.
  • Importing preventive plans before the assets they point to.
  • Treating a success message as proof that the data is right.

In FreeMaint

Included in Core (free)

Import from a spreadsheet, wave by wave

Each importable list in FreeMaint has an Import button with a downloadable template, a validation step that shows errors before anything is created, and a limit of 8,000 rows per file. The limit applies per file, not per account: on every plan, including the free one, the number of records is not capped. To record past work, the “Log past work” button on the work order list creates closed, dated work orders.

Read the documentation

Template for this lesson

Data migration checklist, field mapping and import log

Excel (.xlsx), blank, with progress formulas

Data migration checklist, field mapping and import log

Key takeaways

  • Fix the file, never the records: duplicates, required fields, formats and codes.
  • Import in the order of references: locations, assets, plans, spare parts, open work orders — parts before plans if the plans list them.
  • Test each wave on ten rows before importing the rest.
  • Check every wave with counts, samples and a technician in the field.

Check your understanding

A few quick questions. Nothing is recorded.

  1. 1. In which order should you import your data?
  2. 2. The ten-row test of an asset import shows dates stored as text. What do you do?
  3. 3. The import screen says “40 rows imported successfully”. What does that prove?
  4. 4. How should a summary of past breakdowns be entered?

Put it into practice

Create a free FreeMaint workspace and apply what you learn to your own equipment.

Create a free account

Free your maintenance