Attribute · Import & MIDP Audit

Audit your MIDP. Then push the gaps into Forma.

Upload your MIDP, register, or any spreadsheet. Foreman matches every row to a file in Forma, surfaces what's missing on both sides, and shows you exactly what would change — before anything is written. When you're ready, one click commits the values.

9 sheets

Dry-run report

6 types

Auto-create attrs

Both sides

Of the gap

No writes

Until you say so

Sound familiar · Today

The MIDP says one thing. Forma says something else.

Every team that runs a CDE eventually hits the same problem: a spreadsheet you can trust and a Forma project that drifts.

!Pain · 01

Hand-typing values into Forma

A doc controller copying Discipline, Status, and Suitability across hundreds of files — one custom-attribute panel at a time.

!Pain · 02

MIDP rows for files that aren't there

Your delivery plan lists deliverables; half of them haven't been uploaded yet — and you only find out at the milestone review.

!Pain · 03

Forma files the MIDP forgot

New files land in the CDE that nobody added to the register. They don't get tracked, reviewed, or counted toward delivery.

!Pain · 04

No way to preview before writing

You either trust the script and run it on production data, or you don't run it at all. There's no middle option.

Two-way

Gap detection

9-sheet

XLSX dry-run report

6 types

text · num · date · select…

Auto-create

Missing attributes

Use cases · Who it's for

Built for the people who keep Forma honest.

Whether you're auditing the register, onboarding a project, or running pre-handover checks — the dry-run is your safety net.

Document Controllers

Audit your MIDP every week without writing anything. Find rows for missing files, find files missing from rows, fix the spreadsheet at source — then commit values when the register is clean.

Project Managers

Onboarding a new project? Bulk-set Discipline, Package, Stage, and Suitability for every file from one register. Re-run the dry-run after every milestone to keep the register in sync.

BIM Managers

Standardise custom attributes across projects without using the API. Define them once in your register, let Foreman create them in Forma, then push values to every model file in one go.

Quality & Compliance

Pre-handover audits. Send the dry-run report to the client showing every file's MIDP coverage. Run again after the team fixes gaps. Walk into the milestone with a number you can defend.

Hook · MIDP audit

See the gap on both sides.

Every other tool tells you what's wrong with your spreadsheet. The dry-run report tells you what's wrong with your spreadsheet and with your CDE — without changing either. Download a 9-sheet XLSX, hand it to your team, fix the gaps at source.

MIDP coverage %, in one number

Your spreadsheet covers 42 of 60 files in this folder (70%). 18 ACC files have no row in the MIDP — see report sheet 'Files not in spreadsheet'.

Rows that don't match a file

Typos, files not yet uploaded, files in a different folder. Each gets a row with the original cell contents so you can fix the spreadsheet without re-opening it.

Files that nobody mentioned

Every file in the destination folder that no MIDP row references — with their current attribute values, so you can decide whether to add them to the register or remove them from Forma.

Per-attribute coverage stats

For each mapped attribute: how many rows have a value, how many would apply, how many would be skipped, and how many files in Forma already have a value vs. blank.

MIDP Dry-run Report

midp-2026-04.xlsx · No changes applied

Dry run
70%
MIDP coverage
42 of 60 files referenced
Matched rows
42
Files not in sheet
18
Orphaned rows
3
Cells to apply
126
Sheets · Summary · Will apply · Skipped · Errors · Orphans · Ambiguous · Coverage · New attrs

How it works · Six steps

Six steps from spreadsheet to written values.

Each step is reversible. Nothing is written to Forma until step six — and even then, only when you click Run import.

1Step · 01

Upload spreadsheet

Drop in your MIDP, register, or any XLSX or CSV. Up to 50 MB. Pick the sheet and tell us which row is the header.

2Step · 02

Pick the destination folder

Hub → Project → folder. The destination is scanned recursively so files in sub-folders match too.

3Step · 03

Map columns to attributes

One column becomes the file-name match key. Other columns map to existing custom attributes — or click Create new and define a new attribute on the spot.

4Step · 04

Choose conflict policy

Per-attribute: overwrite, skip if existing, or fill blanks only. Default is fill blanks only — your spreadsheet won't accidentally overwrite curated data.

5Step · 05

Read the dry-run report

Coverage %, will-apply counts, orphaned rows, files not in spreadsheet, per-attribute breakdown. Download the 9-sheet XLSX. Walk away if you want — nothing has been written.

6Step · 06

Run import

When you're satisfied, click Run import. Live progress, live counters, cancel mid-flight, full audit log. Re-run the dry-run after to confirm.

Audit your MIDP without writing a single value to Forma. See the gaps. Then decide.

Start 14-day trial

14-day trial · Full access · No card on file

Capabilities · What's included

Everything you'd want from a serious import + audit tool.

Dry run by default

Step six is a report, not a button. The same logic that would write data is run end-to-end with no API mutations. Walk away whenever.

Two-way gap detection

Rows without a matching file. Files without a matching row. Both sides surface in the report — most tools only catch one direction.

Auto-create missing attributes

Map a column to a custom attribute that doesn't exist yet. Pick the type — text, numeric, true/false, date, list. Foreman creates it in Forma the moment you confirm.

9-sheet XLSX report

Summary · Will apply · Skipped · Errors · Orphaned rows · Ambiguous · Files not in spreadsheet · Attribute coverage · New attributes. Hand it to your team.

Smart filename matching

Match by exact filename, with extension-stripped fallback. Files with the same name in different folders are flagged as ambiguous, not silently overwritten.

Three conflict policies

Per-mapping: overwrite, skip if existing, or fill blanks only. Default is fill blanks only — re-running the import is always safe.

Six APS data types

text · numeric · true/ false · date · list. Excel dates auto-detected as ISO. Boolean accepts true/false/yes/no/1/0. Select / list validated against allowed values.

Saved mappings

Re-run the same MIDP shape every month without re-mapping columns. Save the mapping once, load it next time, change the file.

Live progress + audit log

Watch a progress ring, applied/skipped/failed counters, current file, recent errors. Every run lands in the audit log with applied/failed counts.

Before · After

Manual process vs Foreman.

Task Manual Foreman
Push 200 rows of metadata into Forma 2-3 hours of clicking < 90 seconds
Find files in the MIDP that don't exist in Forma Eyeball the register Orphaned rows sheet
Find files in Forma not in the MIDP Not possible without a script Files-not-in-spreadsheet sheet
Preview before writing Run the script and pray Dry-run report — zero writes
Create a new custom attribute first Project admin → Custom attributes Inline, during column mapping
Coverage % across the project Not possible without a script One number, one click
Re-run the same import next month Re-do everything Saved mapping + new file
Audit trail of who imported what None Every run logged + emailed

Schema · Auto-create

Define the schema while you map.

Map a spreadsheet column to a custom attribute that doesn't exist yet, pick a type, and Foreman creates it in Forma during the import. No project-admin round-trip, no API calls, no waiting on someone else.

Six APS data types

text, numeric, boolean, date, select, multi_select. Type chosen at mapping time, locked once created — same as Forma's own behaviour.

Allowed values for select / multi_select

Define the dropdown list inline. Multi_select cells are split on comma or semicolon and validated against the allowed values before anything is written.

Confirm before creating

The dry-run report lists every new attribute pending. The import can't run until each one is explicitly ticked. A typo in a column header won't pollute your project schema.

Locale-stable type coercion

Excel serial dates parsed to ISO 8601. Numbers parsed with invariant culture so a German-locale CSV doesn't become a string. Booleans accept yes/no, true/false, 1/0.

Column mapping
Column Mapped to
File Name Match key · file lookup
Discipline Existing · text
Status New · select New
Issued Date New · date New
Suitability Existing · select
2 new attributes will be created — confirm in the dry-run report

FAQ · Questions from the field

Frequently asked questions.

Q · 01

What is Attribute Import?

Attribute Import lets you push file metadata into Autodesk Forma from a spreadsheet — XLSX or CSV. Map columns to existing custom attributes or create new ones inline. Run a dry-run first to see what would change before anything is written.

Q · 02

What is the MIDP gap report?

The dry-run produces a 9-sheet XLSX report covering: matched rows, rows that didn't match a file, files that no row referenced, ambiguous matches, type-coercion errors, per-attribute coverage stats, and any new attributes that would be created. Coverage is shown as a single percentage so you can track MIDP completeness over time.

Q · 03

Will running it change anything in Forma?

Not until you click Run import. The dry-run is a read-only report — it loads files from the destination folder, fetches existing custom attribute values, classifies every cell, and writes nothing. You can download the report and walk away.

Q · 04

Can it create custom attributes that don't exist yet?

Yes. Map a column to 'Custom: Create new', pick a type (text, numeric, boolean, date, select, multi_select), and Foreman creates the attribute in Forma when you run the import — but only after you tick a confirmation checkbox in the dry-run report. Typos in column headers won't pollute your project schema.

Q · 05

How are spreadsheet rows matched to ACC files?

By the column you tag as 'Match: File name'. Foreman scans the destination folder recursively, matches each row first by exact filename, then by filename without extension as a fallback. If the same name exists in multiple sub-folders, the row is flagged as ambiguous and skipped — the report lists every candidate path.

Q · 06

What about overwriting existing values?

Three policies, set per attribute: overwrite (always write the spreadsheet value), skip if existing (never write if a value is already there), or fill blanks only (default — only write where the attribute is empty). Default is fill blanks only so re-running the import is always safe.

Q · 07

Can I save a mapping for next month?

Yes. Save your column-mapping configuration once — sheet name, header row, role per column, conflict policy per column — and load it next month with the new spreadsheet. The Saved Mappings tab on the import page lists everything you've saved.

Q · 08

Is there an audit trail?

Every import run is logged with applied / skipped / failed counts and the source filename. The dry-run report download is also logged. Both events surface in the organisation activity feed and the per-tenant admin audit view.

Free resource · BIM managers

MIDP Template (Excel)

A ready-to-use Master Information Delivery Plan template. Use it as the source for your first dry-run audit, then run the import to push values into Forma. Pairs with both Attribute Import and Attribute Extract.

No spam. Unsubscribe with one click.

14-day trial Full access No card on file See pricing

IMPORT · 001 / Your move

Audit your MIDP. Push the gaps. Both directions.

Dry-run report, two-way gap detection, auto-created attributes — all without leaving Foreman.

14-day trial · Full access · No card on file

Not ready? № 02

MIDP template

A ready-to-use master information delivery plan to feed your first audit.

No spam. Unsubscribe with one click.

You're offline — some actions may not work.

Connection lost

Attempting to reconnect to Foreman...

Connection lost

Retrying in --s Attempt - of -

Connection interrupted

Retrying in --s Attempt - of -