We have a requirement to use both external metadata and internal metadata of ECL items.

We were able to define both in the schema and are able to use and get the external metadata as well.

But the internal metadata that we have defined (2 fields) are getting saved in CMS but we are unable to get them in our application.

We are using DXA 2.0, .net environment and are using Resolve ECL TBB in all our CTs. We set our external metadata by using MetadataXml, MetadataXmlSchema and we are not touching the internal metadata as such. It looks like using the Resolve ECL TBB is not publishing the internal metadata.

Any thoughts on how we can get that?

  • Please edit your question and provide the bit more details of how are you trying to access that ECL metadata in your application?, what is your web application type is it DXA or DD4T or web form, Java or.Net? – Velmurugan Nov 28 at 20:56

DXA does not use the “Resolve ECL” TBB. Instead, DXA 2.0 uses an EclModelBuilder in its R2 Data Model Builder Pipeline.

This (optional) model builder should be configured in the “Render Page Content” and “Render Component Content” TBBs. You can check the generated R2 Data Model JSON (using CM Preview or Template Builder) to see if the expected metadata is present.

In your DXA Web App, you should have a View Model Type which inherits from EclItem. The ECL external metadata is available through EclItem.EclExternalMetadata and the internal metadata can be mapped to properties on your View Model using DXA’s Semantic Mapping.

For example, see MediaManagerDistribution. Note that properties like MediaManagerDistribution.PlayerType are (implicitly) mapped to like-named internal metadata fields.

Based on my understanding, since you have already managed to store the internal metadata values in ECL items in CME.

In the defined ECL stub schema Metadata fields, all values are should be able to access in your web application if you manage to Publish the ECL components to broker DB as a DCP then you should be able to broker query and get the metadata fields values in your web application.

I hope it helps.

In order to fix the problem, we added below property in Sdl.Web.Common.Models.Eclitem

public IDictionary<string, object> Metadata { get; set; }

There were no further changes required after that.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.