DAM Bundle
Requirements
- OpenDxp Core >= 1.0
- OpenDxp Headless Bundle >= 1.0
- OpenDxp Dynamic Search Bundle >= 1.0
- OpenDxp Toolbox Bundle >= 1.0
Install
Install / Upgrade
Require the bundle
composer require open-dxp/dam-bundle
- Extend the
config/bundles.phpfile:
return [
// ...
OpenDxp\Bundle\DamBundle\OpenDxpDamBundle::class => ['all' => true],
KnpU\OAuth2ClientBundle\KnpUOAuth2ClientBundle::class => ['all' => true],
];
Installation
This will install permissions, classes, translations and add the extra db structure.
Execute: $ bin/console opendxp:bundle:install OpenDxpDamBundle
Execute: $ bin/console doctrine:migrations:migrate --prefix 'OpenDxp\Bundle\DamBundle\Migrations'
Upgrade
- Execute:
$ bin/console doctrine:migrations:migrate --prefix 'OpenDxp\Bundle\DamBundle\Migrations'
Setup
User Class
Add OpenDxp\Bundle\DamBundle\Model\ApiDamUser as parent class to your existing User Dataobject class.
Required Parameters
parameters:
index_stack_media_list: 'dam_media_%kernel.environment%'
os_hosts:
- 'http://localhost:9200'
os_credentials: [ ]
Example Configuration
# config/packages/opendxp_dam.yaml
opendxp_dam:
dynamic_search:
index_stack:
-
search_type: !php/const OpenDxp\Bundle\DamBundle\DynamicSearch\SearchTypes::DAM_MEDIA_LIST
index: '%index_stack_media_list%'
security:
openid:
enable_user_refresh_check: false
remote_route_after_handshake: 'azure_token_handover'
user_storage_folder_path: '/dam/user'
#required_roles: []
required_groups:
- '%env(string:default::DAM_GROUP_ID)%'
assigned_groups:
- 'my_dam_group_identifier'
Azure Configuration
# .ddev/.env or server .env
DAM_AZURE_TENANT=12345678-1234-1234-1234-123456789012
DAM_AZURE_CLIENT_ID=12345678-1234-1234-1234-123456789012
DAM_AZURE_CLIENT_SECRET=12345678-1234-1234-1234-123456789012
Predefined Properties
Note: These properties will be installed automatically (See Section "Installation").
# var/config/predefined_properties/dam_asset_poster.yaml
opendxp:
properties:
predefined:
definitions:
dam_asset_poster:
name: 'DAM: Asset Poster'
description: 'Use this Property to define a Preview Image for given Asset'
key: dam_asset_poster
type: asset
data: ''
config: ''
ctype: asset
inheritable: false
creationDate: 1769169718
modificationDate: 1769169753
# var/config/predefined_properties/dam_is_collection.yaml
opendxp:
properties:
predefined:
definitions:
dam_is_collection:
name: 'DAM: Is Collection'
description: 'Use this Property on given Folder to promote it as Collection'
key: dam_is_collection
type: bool
data: ''
config: ''
ctype: asset
inheritable: false
creationDate: 1769169668
modificationDate: 1769169772
# var/config/predefined_properties/dam_collection_name.yaml
opendxp:
properties:
predefined:
definitions:
dam_collection_name:
name: 'DAM: Collection Name'
description: 'Use this Property on given Folder to define a Collection Name'
key: dam_collection_name
type: text
data: ''
config: ''
ctype: asset
inheritable: false
creationDate: 1769169668
modificationDate: 1769169772
# var/config/predefined_properties/dam_folder_name.yaml
opendxp:
properties:
predefined:
definitions:
dam_folder_name:
name: 'DAM: Folder Name'
description: 'Use this Property on given Folder to define a nice Name'
key: dam_folder_name
type: text
data: ''
config: ''
ctype: asset
inheritable: false
creationDate: 1769169668
modificationDate: 1769169772
Worker Message Translations
Note: Translation will be installed automatically (See Section "Installation").
Translation keys used for worker job messages (success info, warnings, errors).
| Key | Parameters | DE | EN |
|---|---|---|---|
opendxp.dam.worker.assets_skipped | skipped, total | %skipped% von %total% Assets wurden übersprungen (fehlende Download-Berechtigung) | %skipped% of %total% assets were skipped (missing download permission) |
opendxp.dam.worker.error.authentication_required | – | Authentifizierung erforderlich | Authentication required |
opendxp.dam.error.permission_denied | permission, assetId | Berechtigung "%permission%" verweigert für Asset %assetId% | Permission "%permission%" denied for asset %assetId% |
opendxp.dam.error.asset_not_found | assetId | Asset mit ID "%assetId%" nicht gefunden | Asset with ID "%assetId%" not found |
opendxp.dam.error.collection_not_found | collectionId, type | %type% mit ID "%collectionId%" nicht gefunden | %type% with ID "%collectionId%" not found |
opendxp.dam.error.worker_processing_failed | jobId | Verarbeitung des Jobs "%jobId%" fehlgeschlagen | Processing of job "%jobId%" failed |
opendxp.dam.error.no_processor_found | payloadClass | Kein Processor für Payload "%payloadClass%" gefunden | No processor found for payload "%payloadClass%" |
opendxp.dam.error.invalid_data_object | – | Ungültiges Datenobjekt | Invalid data object |
opendxp.dam.error.exception | message | Ein Fehler ist aufgetreten: %message% | An error occurred: %message% |
Reset
$ bin/console dynamic-search:os:rebuild-index-mapping -c opendxp_dam_media
Upgrade Info
Before updating, please check our upgrade notes!
License
DACHCOM.DIGITAL AG, Löwenhofstrasse 15, 9424 Rheineck, Schweiz
dachcom.com, [email protected]
Copyright © 2026 DACHCOM.DIGITAL. All rights reserved.
For licensing details please visit LICENSE.md