diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/AudioForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/AudioForm.java
new file mode 100644
index 000000000..a9d750019
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/AudioForm.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2017 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.cms.ui.assets.forms;
+
+import com.arsdigita.bebop.FormProcessException;
+import com.arsdigita.bebop.Label;
+import com.arsdigita.bebop.PageState;
+import com.arsdigita.bebop.event.FormSectionEvent;
+import com.arsdigita.cms.ui.assets.AssetPane;
+import com.arsdigita.cms.ui.assets.AssetSearchWidget;
+import com.arsdigita.globalization.GlobalizedMessage;
+import org.libreccm.cdi.utils.CdiUtil;
+import org.librecms.CmsConstants;
+import org.librecms.assets.AudioAsset;
+import org.librecms.assets.BinaryAsset;
+import org.librecms.assets.Image;
+import org.librecms.assets.LegalMetadata;
+import org.librecms.contentsection.Asset;
+import org.librecms.contentsection.AssetRepository;
+
+import java.util.Optional;
+
+/**
+ *
+ * @author Yannick Bülter
+ */
+public class AudioForm extends BinaryAssetForm {
+
+ private AssetSearchWidget assetSearchWidget;
+
+ public AudioForm(final AssetPane assetPane) {
+ super(assetPane);
+ }
+
+ @Override
+ protected void addWidgets() {
+
+ assetSearchWidget = new AssetSearchWidget("legal-metadata", LegalMetadata.class);
+
+ add(new Label(new GlobalizedMessage(
+ "cms.ui.assets.audio.legal_metadata.label",
+ CmsConstants.CMS_BUNDLE
+ )));
+ add(assetSearchWidget);
+ }
+
+ @Override
+ protected void initForm(PageState state, Optional selectedAsset) {
+
+ super.initForm(state, selectedAsset);
+
+ if (selectedAsset.isPresent()) {
+
+ final AudioAsset audioAsset = (AudioAsset) selectedAsset.get();
+
+ final LegalMetadata legalMetadata = audioAsset
+ .getLegalMetadata();
+ if (legalMetadata != null) {
+ assetSearchWidget.setValue(state, legalMetadata.getObjectId());
+ }
+ }
+ }
+
+ @Override
+ protected Asset createAsset(final FormSectionEvent event)
+ throws FormProcessException {
+
+ final AudioAsset audioAsset = (AudioAsset) super.createAsset(event);
+
+ final PageState state = event.getPageState();
+
+ updateData(audioAsset, state);
+
+ return audioAsset;
+ }
+
+ @Override
+ protected void updateAsset(final Asset asset,
+ final FormSectionEvent event)
+ throws FormProcessException {
+
+ super.updateAsset(asset, event);
+
+ final PageState state = event.getPageState();
+
+ final AudioAsset audioAsset = (AudioAsset) asset;
+
+ updateData(audioAsset, state);
+ }
+
+ protected void updateData(final AudioAsset audioAsset,
+ final PageState state) {
+
+ final Long legalMetadataId = (Long) assetSearchWidget.getValue(state);
+ if (legalMetadataId != null) {
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
+ final AssetRepository assetRepo = cdiUtil.findBean(
+ AssetRepository.class);
+ final LegalMetadata legalMetadata = (LegalMetadata) assetRepo
+ .findById(legalMetadataId)
+ .orElseThrow(() -> new IllegalArgumentException(String.format(
+ "No LegalMetadata asset with ID %d in the database.",
+ legalMetadataId)));
+
+ audioAsset.setLegalMetadata(legalMetadata);
+ }
+ }
+
+ @Override
+ protected BinaryAsset createBinaryAsset(final PageState state) {
+ return new AudioAsset();
+ }
+}