# Extension profiles and the coverage gate

Joomla extensions store media references in very different ways: sometimes as a path in a column, sometimes deep in a JSON parameter tree, sometimes as a folder entry. For Media Organizer to search a foreign extension reliably, it has to know *where* that extension keeps its references.

This knowledge sits in **profiles**.

## Profiles are data, not code

A profile describes, for exactly one extension, which tables and columns can contain media references and how they are to be read. It is a data file — not program code.

That has a practical advantage: profiles can be updated independently of the extension. When knowledge about another third-party extension is added, you do not need a new program — only new data.

<div class="callout info" id="bkmrk-profiles-are-not-gue">Profiles are **not guessed**. Every one of them comes out of a documented procedure in which the actual data structure of the extension is examined and verified. An invented table or column name would be the most dangerous kind of error: it would make a file that is in use look orphaned.

</div>Which profiles are currently available is shown in **Options → scanning** under *available profiles*.

## The coverage gate

Now the decisive question: what happens with an installed extension for which there is *no*profile?

Media Organizer could ignore it and hope. It does not. Instead it states: "for this extension I cannot rule out that it uses media" — and blocks deleting for good.

<div class="callout warning" id="bkmrk-incomplete-coverage-">**Incomplete coverage blocks deleting for good and nothing else.** Scanning, reviewing, quarantine and restoring stay fully possible. All of that is reversible after all.

</div>The notice appears at the top of the review view and names the extension concerned.

## How to establish coverage

There are three clean ways:

1. **Wait or ask.** For common extensions, profiles arrive with updates. If one you need is missing: report it.
2. **Register the extension as media-free.** If an extension demonstrably stores no media references, enter its element (for example `com_example`) under **Options → scan – advanced → media-free extensions**. It then counts as covered.   
    Under *detected media-free extensions* you find those already verified — you do not have to enter those yourself.
3. **Uninstall the extension** if you no longer need it anyway.

<div class="callout warning" id="bkmrk-%22media-free%22-is-a-cl">**"Media-free" is a claim you stand behind.** Only register an extension if you really know — not to get rid of the notice. That very entry helps decide whether a file may be deleted.

</div>## The override — and why you should avoid it

There is a switch that lifts the block: **Options → security &amp; retention → override the deletion block on incomplete coverage**.

It is deliberately built to be inconvenient:

- Only **super users** may set it.
- A **reason is mandatory** — no text, no override.
- The override is **recorded in the audit log** together with the reason.

It exists for the case where you know better than the software and stand behind that. It is not a shortcut for clicking the notice away. If you need it, the more honest question is usually: why is the profile missing — and would the route via "register as media-free" not be the right one?

## Custom fields: a common stumbling block

Custom fields can contain media. Which field types those are is defined under **Options → scan – advanced → custom field media types**. The default covers Joomla's own media field as well as common field plugins.

What matters is the automatism behind it: if media fields are *used* but not *searched*, deleting for good stays blocked. So if you use another field plugin that stores media, add its internal type name to this list.

## Where to go from here

- [Configuration reference](https://docs.graup-it.de/books/media-organizer-en/page/configuration-reference)
- [Quarantine, restoring, deleting for good](https://docs.graup-it.de/books/media-organizer-en/page/quarantine-restoring-deleting-for-good)

<small>Applies to version 1.2.0.</small>

[Deutsche Fassung](https://docs.graup-it.de/link/68)