Data model & visibility requirements

In this section we will discuss the following topics:

  1. Data model, introducing a high level entity-relationship diagram of the key NativeVideo data concepts
  2. Overview on security aspects, describing the visibility granted in the default permission set


Data Model

A high level visual representation of the data model implemented in NativeVideo:

NativeVideo - High Level ERD


A brief description of each entity:

  • Video, this is the core object that stores the metadata of the video that has been recorded or uploaded. In this Salesforce object we hold:
    • A reference to the actual data files for this video, stored outside Salesforce on a trusted video platform
    • The duration of the video, in seconds
    • A reference to the questionnaire and the list of the specific questions that have been asked, if any
    • The full audio transcription and the keywords automatically generated from listening to what has been said in the video
    • A reference to the thumbnail that has been generated and saved in a shared Salesforce Folder
  • Video Junction, as a pre-defined object to map a video with any other Salesforce standard or custom object. By default there are only lookups to Account and Contact objects, but anything can be linked up here. On the Video Junction object you can also find the fields required by the Personalised Video Prospecting functionality, described here.
  • Questionnaire, to group video questions. A questionnaire record describes how an interview should be run, specifying if all questions should be asked or if just a subset of them should be randomly identified and asked. Questionnaires are kept hidden until the isActive flag is set to true. An example of video interviews can be found here.
  • Question, a very simple object that defines the actual question that will be asked, alongside the amount of time granted to the end user to answer. Optionally, and for questionnaires not set as Random, there is an order field that allows administrator to define the position of the question in the overall interview experience.


Brief overview on data visibility aspects at an object level

The visibility of a video hosted in NativeVideo is fundamentally associated with the access to its target or parent record, depending if we are in a one-to-one or in a one-to-many scenario, where we are recording & browsing a single video or a list of them. In other words, there is no need for extra configuration effort, so if the running user already has access to the target record, he can immediately play a video associated to it.

The NativeVideo package includes a generic permission set called "NativeVideo Permissions", that needs to be associated with all users that are entitled to either watch or record videos. The permission set is not associated to any specific Salesforce licence, so it can be applied to any user type. 

The default NativeVideo permission set unlocks the following visibility:

Object API NameOrganisation Wide Defaults (OWD)Create Read Update Delete (CRUD)Field Level Security (FLS) - ReadField Level Security (FLS) - Edit
Video__cPrivateCreate, ReadAll fields (except NV system fields)All fields (except NV system fields)
Video_Junction_cPrivateCreate, Read, UpdateAll fieldsAll fields
Video_Questionnaire__cPrivateReadAll fieldsTitle
Video_Question__cPrivateCreate, ReadAll fieldsAll fields


Once the permission set has been applied, the user can start watching or recording videos, on the records that he can see (browsing) and edit (recording). A more detailed overview on the record-level visibility assumptions for the recording functionalities can be found here, and for the browsing capabilities here.