Sitecore has several templates it uses for items uploaded into the Media Library that can all be found at /sitecore/templates/System/Media. There are templates for all media types--documents, images, files, and more.

As part of a custom integration project for a client, I needed to add some custom fields on to items added into the Media Library from a third party system. I didn't want these fields present on items uploaded through the Media Library, so I chose to make new templates that inherit from these built-in media templates with the additional fields tacked on.

After I created these templates and imported some items with them, I was surprised to find that they would not show up in the Media Library Browser. In this post I'll outline how to fix that.

Copy Custom Media Templates to Core Database

If you switch over to the core database and navigate to /sitecore/templates/System/Media, you'll find that exact copies of all of the templates in the same location of the master database exist here too.

You need to copy your custom media item templates over to the core database as well. Open the Sitecore Control Panel, and click Move an item to another database in the Database section. Follow the wizard to copy your templates over to the core database. I recommend placing them in the same folder structure that you have in your master database to make them easier to find in the future, but it doesn't really matter. Note that this wizard actually copies your items over, it doesn't delete them from the master database as the name implies.

It's important that you copy your templates to the core database exactly as they are in the master database, down to the same ID.

If your custom media item templates derive from one of the built-in media item templates found under /sitecore/templates/System/Media, your items should start to show up in the Media Library Browser.

If your custom media item templates do not derive from one of the built-in media item templates found under /sitecore/templates/System/Media, this is only part of the story. Keep reading.

Why Duplicate the Templates?

It may seem strange for these templates to be duplicated, but the presence of these templates in the core database drive what types of items are displayed in the Media Library Browser. If you inspect network traffic when you do a search in the Media Library Browser, you'll see a request made to the following URL:

http://sitecoredemo.localhost/-/item/v1/sitecore/shell?facetsRootItemId=%7B7F43D3D0-CAC6-45D8-96FE-B76F4A117F9B%7D&search=cover&root=%7B3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1%7D&searchConfig=%7BB0DF45DF-EA31-4C11-9E34-98B41DF549C5%7D&sc_content=master&language=en&format=%24convert_date_to_friendly_format&fields=__Created%7CDimensions&pageIndex=0&pageSize=20  

The key is the searchConfig parameter in the query string. If you lookup the item {B0DF45DF-EA31-4C11-9E34-98B41DF549C5} in the core database, you'll find an item called AllMediaFiles located under /sitecore/client/Applications/Dialogs/SelectMediaDialog/PageSettings/SearchConfigs. The Media Library Browser uses this item to filter its search to only items found under sitecore/media library (see the Root field) and only items that inherit from the /system/templates/media/unversioned/file or /system/templates/media/versioned/file templates (see the Base Templates field), which all templates under /system/templates/media inherit from.

This search config item only knows about items in the core database, which is why all of the media item templates must be duplicated to core as well.

If your custom media item templates don't derive from one of the built-in file templates, you have to add them to the Base Templates field of the AllMediaFiles item. Now they will show up in the Media Library Browser.

Has this helped you out? Let me know in the comments. Cheers!

This post originally appeared on the Perficient Microsoft blog.