Per Nergård (MVP)
OMVPSaaS CMS Developer CertificationCommerce Connect 13 Developer Certification +2
Mar 10, 2026
visibility 875
star star star star star
(2 votes)

Missing Properties tool for Optimizely CMS

If you have been working with Optimizely CMS for a while you have probably accumulated some technical debt in your property definitions. When you refactor your models removing properties, renaming content types, or cleaning up after a migration the old property definitions often stick around in the database. They are harmless for the most part, but they add noise and can be confusing when inspecting content types.

  I actually built a tool for this like 10 years ago and I recently had a need to revisit it during a large migration project where we ended up with quite a few orphaned properties that   
  needed cleaning up.

  What it does

  The tool scans all your code-defined content types (PageTypes and BlockTypes) and looks for property definitions in the database that no longer have a corresponding attribute in code. Manually created content types are intentionally skipped it  only checks types backed by a C# model.

  The results are grouped by content type so you can see exactly what is affected. From there you have a few options:

  - Select individual properties and delete them
  - Select all properties for a specific content type
  - Delete everything at once

  Both deletion paths require a confirmation dialog because this operation is permanent and cannot be undone.

  There is also a Rescan button if you want to re-check after deploying model changes.

  Installation

  Configure blazor and decide on how you want to render the component. I just created a content type specific for the tool. Example layout included on github.

  Add the tool to your project and register it in Startup.cs:

  services.AddMissingProperties();

 

  The source code is on https://github.com/pernergard/NergardToolsAndUtilities

 

Mar 10, 2026

Comments

error Please login to comment.
Latest blogs
Surviving a Dirty Feed. Part 3: Error Handling and Event Batching

Committing a 250,000-row Optimizely catalog import row by row, returning a per-row failure report, and coalescing catalog events into one per batch.

Stanisław Szołkowski | Oct 16, 2026 |

Building UI Extensions for Optimizely SaaS CMS

Introduction Developers have been extending the functionality of Optimizely PaaS CMS for years using addons built in C# and deployed as NuGet...

Mark Stott | Oct 15, 2026

Cheapskate AI Translator: Because Translation Should Not Require a Second Mortgage

There is a particular kind of software project that begins with a detailed architecture document, a product roadmap, and a carefully assembled...

Linh Doan Cuu | Oct 15, 2026

Computed Fields in CMS 13 Content Contracts with Optimizely Graph

Content Contracts in Optimizely CMS 13 allow different content types to share a common structure when querying Optimizely Graph. But what if the...

Mardy | Oct 14, 2026