A practical checklist to keep your BIM models healthy throughout a project.
Replace {company} with your own naming convention.
This template assumes the initial model setup is already in place.
For how to prepare a model before anyone starts modelling, see the companion post → Before the First Wall: BIM Model Kickoff Setup.
How to use it. For each check, mark the Status column with ✓ (pass), ✗ (fail) or NA (not applicable), and use Notes to record where, who, or a link to the element.
Cadence (Cad.), how often to run each check:
W weekly · M monthly · MS per milestone / phase
Detection, how each check can be verified:
Auto a tool resolves it on its own · Partial a tool flags candidates and you confirm · Manual human judgement, no tool can check it
Model structure and organisation
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| STR-01 | All disciplines on their own workset | M | Partial | ||
| STR-02 | No model groups (watch for leftovers from arrays) | W | Auto | ||
| STR-03 | Models purged | M | Partial | ||
| STR-04 | File size under the agreed limit | M | Auto | ||
| STR-05 | Project-specific BEP requirements met | MS | Manual | ||
| STR-06 | Same project browser organisation across all models | M | Partial | ||
| STR-07 | Linked CADs on their dedicated workset | M | Auto |
Naming conventions
Common criterion for this section: each item matches the
{company}convention and unused ones are purged.
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| NAM-01 | Filters | M | Auto | ||
| NAM-02 | Materials (same set across all models + naming) | M | Partial | ||
| NAM-03 | Families | M | Auto | ||
| NAM-04 | Filled regions | M | Auto | ||
| NAM-05 | View titles (per BEP) | M | Auto | ||
| NAM-06 | Linked CADs (naming + purge unused Xrefs) | M | Partial | ||
| NAM-07 | Scope boxes | M | Auto | ||
| NAM-08 | Sheets: numbering sequence, naming, no typos, consistent structure (per BEP) | M | Partial | ||
| NAM-09 | Project browser organisation (naming) | M | Auto |
Modelling quality
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| QUA-01 | No duplicate elements | W | Auto | ||
| QUA-02 | Elements assigned to the correct level | M | Partial | ||
| QUA-03 | Geometry modelled close to the origin | M | Auto | ||
| QUA-04 | Each element in its correct category (e.g. a fire extinguisher not modelled as a Sprinkler) | MS | Partial | ||
| QUA-05 | No generic families in advanced phases | M | Partial | ||
| QUA-06 | Element connections resolved | MS | Partial | ||
| QUA-07 | Clash detection with no critical clashes | MS | Partial | ||
| QUA-08 | LOD/LOI per phase | MS | Manual | ||
| QUA-09 | Warning count below threshold (logged weekly) | W | Auto |
Families
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| FAM-01 | No manufacturer families | M | Partial | ||
| FAM-02 | Parameters configured and filled correctly | M | Partial | ||
| FAM-03 | No families using imperial units | M | Auto |
Coordination and deliverables
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| COO-01 | Correct IFC export | MS | Partial | ||
| COO-02 | Links assigned to the correct workset (at project start) | MS | Partial | ||
| COO-03 | Publish sets to Autodesk Forma reviewed | M | Partial | ||
| COO-04 | Shared coordinates / survey point aligned across models | MS | Auto | ||
| COO-05 | Links with correct reference type (overlay/attach) and pinned | MS | Partial | ||
| COO-06 | All links sourced from the agreed CDE folder (no local/desktop paths) | MS | Auto |
Data and parameters
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| DAT-01 | MEP elements with no system assigned | M | Auto | ||
| DAT-02 | Delete unused shared parameters | M | Partial | ||
| DAT-03 | Zoning parameter filled on grids | M | Auto | ||
| DAT-04 | View-order and user parameters set per discipline | M | Partial |
Sheets and drawings
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| SHT-01 | Graphic overrides prohibited | W | Auto | ||
| SHT-02 | Don’t fake layouts with model geometry + a linked model view | M | Partial | ||
| SHT-03 | Grids use a dedicated type in models where their visibility needs separate control | M | Auto | ||
| SHT-04 | Walls set to Coarse detail in plans (wall layers hidden), via view template | M | Partial | ||
| SHT-05 | Faking schedules with lines + text prohibited (use real schedules) | M | Manual | ||
| SHT-06 | Parameter fill format on Revisions | M | Partial | ||
| SHT-07 | All views have a view template applied | M | Auto | ||
| SHT-08 | View templates with Phase Filter: None; visibility controlled with regular view filters, not phase filters | M | Auto |
Prohibitions
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| PRO-01 | Nothing carrying another company’s name (detail items, families, etc.) | M | Partial | ||
| PRO-02 | No imported or exploded CADs | W | Auto | ||
| PRO-03 | No one edits the official templates (e.g. the 3D IFC export template) | MS | Manual | ||
| PRO-04 | Design options prohibited | W | Auto |
Notes
Phases and design options
Why I prefer not to audit phases (on ~95% of projects). Phases can corrupt models easily and produce errors that are hard to trace in collaborative environments. With linked models it gets worse: when phase filter names don’t match exactly across files, Revit silently falls back to “None” and shows everything from every phase, as Autodesk’s own documentation confirms.
Instead, I prefer to set view templates with Phase Filter: None and apply all visual modifications through regular view filters. That way graphic control is explicit, reproducible, and doesn’t depend on each element’s phase state.
If you do need to audit a project that uses phases, I wrote a short post explaining how they work → How Phases Work in Revit
About design options. The idea behind design options is sound, but they consume a lot of computer resources and make models slow to work in. Even when inactive and hidden, every option still forces Revit to recalculate how it affects the surrounding elements on each change. In my opinion, the cost of keeping them coordinated across disciplines doesn’t pay off versus simpler alternatives.