Skip to main content
Skip table of contents

Convert Binder-in-Binder eDetailers to work in Amplify

This is only for Activator exported eDetailers, and for eDetailers that consists of a binder-in-binder structure.

Some eDetailers includes a binder-in-binder structure, meaning the Multichannel Presentation that exported includes both slides and other Multichannel Presentations with slides itself. This setup is not supported by Amplify yet, so here’s a few steps on how to the eDetailer zip to work in Amplify.

The first thing you need to do is extract the zip, so you can work with the contents.

Update folder structure

For eDetailers that includes binders themselves, we will need to update the folder structure within the exported zip, before it can work in the current state of Amplify.

Basically this is the folder structure of an eDetailer with binders in it when it’s exported from Activator:

  • 101233_0_1 (binder)

    • 101234_0_3 (slide)

    • 103231_1_2 (slide)

  • 103233_1_4 (binder)

    • 101235_0_2 (slide)

    • 101236_0_1 (slide)

    • 103331_0_2 (slide)

And this is the structure we support in Amplify:

  • 101234_0_3 (slide)

  • 103231_1_2 (slide)

  • 101235_0_2 (slide)

  • 101236_0_1 (slide)

  • 103331_0_2 (slide)

So, to make the eDetailer work for Amplify, we basically need to move all slider folders into the root of the eDetailer folder.

Fixing shared resource

For slides built in Activator there is a relation to a shared resource that is used when building the slide, which is usually the same shared resource that has been used across all the slides in the eDetailer. Using the same shared resource across ensures that they keep the same design and structure across the slides.

When exporting an eDetailer from Activator v2 you usually get this shared resource in the exported zip as well, as the shared resource will also be set as a relation on the binder itself and not only on the slides. But for Activator v1 eDetailers, the relationship between binders and shared resources doesn’t exists and the shared resource therefore isn’t present in the exported eDetailer zip.

To ensure that we have a working shared resource in the eDetailer we can simply check the eDetailer directory and see if there already is a “shared” folder in the root of it. As an example, the eDetailer directory should look something like the following:

  • 101234_0_3 (slide)

  • 103231_1_2 (slide)

  • 101235_0_2 (slide)

  • 101236_0_1 (slide)

  • 103331_0_2 (slide)

  • shared

For fixing this, there are two ways depending on the setup in your eDetailer.

If your shared resource has been added inside the eDetailer

If you have added the shared resource as a document inside the eDetailer binder, then the shared resource is already part of the exported zip, it just hasn’t been named correctly and therefore isn’t detected as a shared resource.

To fix this, you simply have to find the document folder in the binder (it would be named something like “10123_0_1” so with a document version number) and rename it to “shared”. You would also need to ensure that the “shared” folder is placed in the root of the eDetailer directory.

If your shared resource only has relations to the slides but nowhere else

If your shared resource isn’t part of the exported eDetailer zip, then you will need to find the shared resource in Activator and export the code of it. Thereafter you would need to insert it into the root of the eDetailer directory and ensure that the shared resource folder is called “shared”.

Update presentation details in JSON file

The next step is to ensure that the presentation details regarding the documents within it is updated correctly, which is done in the “presentation.json” file that is placed in the root of the eDetailer directory.

The reason we need to do this, is to ensure that Amplify has the necessary knowledge regarding slide names and IDs, which is leveraged to enable support for Veeva features such as navigating between slides, etc.

The “presentation.json” file for a binder-in-binder eDetailer looks something like the following:

JSON
{
  "version_id": "101595_0_4",
  "name__v": "eDetailer Name",
  "nodes": [
    {
      "version_id": "101233_0_1",
      "name__v": "Binder 1",
      "document_number__v": "VV-12340",
      "binder__v": true,
      "nodes": [
        {
          "version_id": "101234_0_3",
          "name__v": "Slide 1",
          "document_number__v": "VV-12341"
        },
        {
          "version_id": "103231_1_2",
          "name__v": "Slide 2",
          "document_number__v": "VV-12342"
        }
      ]
    },
    {
      "version_id": "103233_1_4",
      "name__v": "Binder 2",
      "document_number__v": "VV-12343",
      "binder__v": true,
      "nodes": [
        {
          "version_id": "101235_0_2",
          "name__v": "Slide 3",
          "document_number__v": "VV-12344"
        },
        {
          "version_id": "101236_0_1",
          "name__v": "Slide 4",
          "document_number__v": "VV-12345"
        },
        {
          "version_id": "103331_0_2",
          "name__v": "Slide 5",
          "document_number__v": "VV-12346"
        }
      ]
    }
  ]
}

But since we updated the folder structure in the eDetailer directory, we will need to do the same kind of updates in the “presentation.json” file. So, we would need to remove the binders from the array of “nodes” in the file and move the object for all slides into the root “nodes” array. In the end it would look like the following:

JSON
{
  "version_id": "101595_0_4",
  "name__v": "eDetailer Name",
  "nodes": [
    {
      "version_id": "101234_0_3",
      "name__v": "Slide 1",
      "document_number__v": "VV-12341"
    },
    {
      "version_id": "103231_1_2",
      "name__v": "Slide 2",
      "document_number__v": "VV-12342"
    },
    {
      "version_id": "101235_0_2",
      "name__v": "Slide 3",
      "document_number__v": "VV-12344"
    },
    {
      "version_id": "101236_0_1",
      "name__v": "Slide 4",
      "document_number__v": "VV-12345"
    },
    {
      "version_id": "103331_0_2",
      "name__v": "Slide 5",
      "document_number__v": "VV-12346"
    }
  ]
}

A last thing to be aware of, if is your shared resource was included into the eDetailer zip as a document itself, so named with a document version number instead of the “shared” name, then the shared resource will also be inside this “presentation.json” file. But since we’ve renamed it, we will also need to remove it from the “nodes” array. So, basically locate the specific node object, that refers to the document that was previously referring to the shared resource folder, and then remove it.

Ready and upload

Hereafter, everything is ready and updated. The last thing we then need to do is zip the entire eDetailer directory again, and upload it in the eDetailer amp creation flow in Amplify.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.