For more information about working in the DAM see Digital asset management. The DAM App module installs the Assets app.

The Digital Asset Management (DAM) module provides the functionality to manage assets such as images, videos and documents and use them on the website.

Module structure

magnolia-dam-parentparent reactor 

API for the base classes as Item , ItemKey , Asset , Folder AssetRendition , AssetProvider
Simple Maven module. (No Magnolia module)


Core functionality.

contains an implementation for AssetProviderRegistry , the DamDownloadServlet , etc.
The Magnolia module holding the module class DamCoreConfiguration .

magnolia‑dam‑compatibilityExposes the Magnolia DAM 1.x implementation to enforce compatibility between DAM module1.2.x and 2.x 
magnolia-dam-jcrJCR based implementation of AssetProvider , etc. 
magnolia-dam-appThe Magnolia module which contains and configures the content app to administrate the assets.
(The content app depends on the magnolia-dam-jcr because of its Content connector).

The link between magnolia-dam-jcr and the Imaging module.

Provides a AssetRenderer based on magnolia-dam-jcr.

Provides the DamTemplatingFunctions .
(Unfortiunately also dependent on magnolia-dam-jcr. Hopefully this dependency will be removed soon, see MGNLDAM-593 - Getting issue details... STATUS )
magnolia-dam-previewAdds thumbnail and portrait views for PDFs and videos. This is an optional module and is not installed by default. 



All DAM sub modules, except DAM Preview, are bundled with Magnolia and typically already installed. You can download the bundle or individual sub modules from our Nexus repository.


DAM is a Community module. All sub modules, except DAM Preview are typically already installed. Launch the Configuration app and go to /modules/dam/dam-app, /dam-templating and /dam-jcr to check. (warning) The DAM API and DAM Compatibility modules are not registered in configuration and DAM Preview is an optional module that needs to be downloaded and installed separately.

(warning) Create a backup of your system before you install a module. Uninstalling a module is not as simple as removing the .jar file. Modules add and change configurations and may change the content. Try new modules in a test environment first. A module consists of a JAR file and may include dependent JAR files. Modules are responsible for updating their own content and configurations across versions. Be sure to keep only one version of each module and its dependencies.

To install a module:

  1. Stop the application server.
  2. Copy the module JAR files into the WEB-INF/lib directory. The location of this directory depends on the application server.
    • Tomcat: /webapps/magnoliaAuthor/WEB-INF/lib
    • JBoss: /server/default/deploy/magnoliaAuthor/WEB-INF/lib
  3. Restart the server.
  4. Go to the AdminCentral URL.
  5. Start the Web update process.
  6. Click Start up Magnolia.

Repeat the steps for each author and public instance.


To uninstall a module, remove the module JAR file from the /WEB-INF/lib folder and restart Magnolia.

(warning) However, this is rarely enough. Modules add and modify configuration during installation. The use of a module also changes content. Removing all of these changes is difficult without knowing the installation tasks in detail.

To test a module, use the embedded Derby database and take a backup of your repositories folder. Install the module and try it. When you are done testing, remove the module JAR and restore the repositories folder from the backup. This way you can go back to square one.

We also recommend that you segregate the development and production environments. Take regular backups for disaster recovery so you can revert to a prior state in a routine fashion.

Maven dependencies

 Choose this option if you have your own bundle. Using Maven to manage module dependencies is a best practice.

  1. Add a dependency element including the module version number in your bundle's parent POM:


  2. Add a dependency element without the version number in the Magnolia webapp POM, typically inside the parent project:

        <!-- more dependencies here ... -->
        <!-- more dependencies here ... -->

    All required modules are directly oder transiently included by the 2 modules above.


Get further information at:

#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))