Device-type-sensitive licence checks
This page was never published on the Drupal site.
Overview
This feature optionally extends the SDP licence authorisation logic with an additional check using the device type:
- Devices are assigned device types.
- Products are assigned to these device types.
- A license is (optionally) authorised for a product only if the requesting device's device type is in the list of permitted device types for the product.
The functionality is achieved in two steps:
- When SDP ingests a CMS export file, it assigns products to the existing device types.
- When a license is requested, the authorisation logic can enforce the device-type-sensitive check.
Terms
- Device type: this is an arbitrary label, defined by the operator, that is used to categorise devices. It can be anything (for example, iOS, Android, smartphone, tablet, OTT, CableSTB, and so on).
DeviceProfile: this is the entity in the SDP data model that represents a type of device. The actual "device type" label that is assigned to the device one of this entity's fields (DeviceProfile.deviceTypeList).DeviceInformation: this is a list of name-value pairs, reported by the client device to the back-end, which includes device characteristics like the OS name and version, screen size and resolution, manufacturer, and so on.DeviceClassifier: this is the entity in the SDP data model that contains the rules that theDeviceInformationmust match for aDeviceProfileto be assigned to a particular device.PolicyGroup: the SDP data model name for products.Platform: the CMS data model entity that contains a list of "features". This is used to assign one or moreDeviceProfiles to products.
Mapping products to device types
(A product is actually mapped to a DeviceProfile, of which the device type is a part.)
- This feature reuses the existing CMS capability to link Platforms to Products.
A Platform is a container of features, which effectively assigns a set of features to a Product. - A Product is then eligible for a device if the
DeviceProfilecontains all the features present in the Platform linked to that Product. - If a Product has no Platform assigned to it, it means the Product is eligible for all
DeviceProfiles. - If a Product has a set of features that is not contained by any DeviceProfile, this product is not eligible for any license authorisation (if device-type-sensitive check is enabled).
The following figure shows a sample configuration that illustrates the relationship between Products and Devices:

Enabling the device-type-sensitive licence check
- This extra check can be enabled or disabled via the configuration.
The default value isfalse(disabled) - When enabled, it is applied in both post-delivery (
isContentAuthorized) and pre-delivery (getContentRights).
Updating products when a new device type is added
When the operator adds, deletes, or updates a DeviceProfile, existing products (PolicyGroup instances) in SDP may need to be assigned to or removed from that DeviceProfile.
This re-mapping can have a significant performance impact if the number of existing products is very large. On the other hand, changing the existing DeviceProfiles only happens very infrequently.
Alternatively, the operator can trigger a full CMS export to force a full re-mapping of products to device types.
Since a full CMS export does not transmit any data deletions done since the last export, a successful delta export must have been performed just before the full export.
Use cases
Updating products in the CMS
Creating a Product with no features linked to it
- The CMS exports the Product downstream with no link to a Platform.
- The SDP ingests the Product and creates a
PolicyGroupwith no features. - The SDP assigns all existing
DeviceProfileinstances to thisPolicyGroup.
Creating a Product with features via REST API
- The CMS exports the Product downstream and also the link to the Platform that contains the features.
- The SDP ingests the Product and creates a
PolicyGroupwith the associated features. - The SDP looks at the
DeviceProfiletable and assigns all theDeviceProfileinstances whose features contain the features in thePolicyGroupto thisPolicyGroup.
Editing a Product
- The CMS exports the Product downstream linked to the Platform with the new list of features.
- The SDP ingests the Product and updates the list of features assigned to the
PolicyGroup. - The SDP looks at the
DeviceProfiletable and assigns/removesDeviceProfileinstances to/from thisPolicyGroupaccording to thePolicyGroup's new feature list.
Updating a Device Profile in SDP
Creating a new Device Profile
- The SDP creates the new
DeviceProfileinstance. - The SDP looks at the
PolicyGrouptable and assigns the newDeviceProfileto thePolicyGroups whose features are contained by theDeviceProfile's features.Note that
PolicyGroups with no features (PG2 in the example above) are also assigned to the newDeviceProfile.
Removing a Device Profile
- The SDP deletes the
DeviceProfileinstance. - The SDP removes this
DeviceProfilefrom allPolicyGroupinstances.
Editing a Device Profile
In this use case, the operator adds/removes features to/from a DeviceProfile.
- The SDP updates the
DeviceProfileinstance as requested. - The SDP looks at the
PolicyGrouptable and assigns/removes theDeviceProfileto/from thePolicyGroups according to the new list of features.
Requesting a licence (end user)
Device type licence check is not enabled
SDP's isContentAuthorized and getContentRights APIs either authorise the license or not, depending on whether the content is included in a PolicyGroup that is linked by an ACL of the account (that is, if the user has purchased the content).
Device type licence check is enabled
In addition to what it does when this check is not enabled (above), the SDP:
- Looks up the
DeviceProfilefrom the device identifier in the token. - Verifies that the
PolicyGroupthat is linked in the account's ACL points to the aboveDeviceProfile.