ULM Entities

Content

Overview

This topic descries the the primary ULM entities that make up ULM Cloud.

The ULM data model includes 6 primary entities:

  • User: The primary ULM entity. It represents an individual person.
  • Group: A collection of entities (e.g., a group of users within a household)
  • Account: Represents an operator's billing account for one or more services.
  • Subscription: Represents an instance of a service. Cannot exist without a parent account entity
  • Feature: A very specific functionality of a service. Cannot exist without a parent subscription entity.
  • Runtime: Represents an individual device, physical (e.g., tablet) or virtual (e.g., web browser).

ULM entities are linked to each other by entity associations.

Properties And Attributes

ULM entities are composed of properties and attributes, or data field names and their respective values. Each entity includes a set of default properties, and an attributes property that contains additional entity-specific metadata.

In addition to this, any two entities are linked to each other by way of an association entity, which itself consists of of permission flags and attributes that define the relationship between those particular entities.

User

The user is the central entity in ULM. It represents and individual person.

Note About Semantics: User with an uppercase U refers to the ULM User entity, whereas user with a lowercase u refers to the end-user or human being. You might also think of the ULM User Entity as the back-end technical equivalent of the front-end "User ID" or "User Profile."

When a user onboards to get their own User ID or User Profile within your service, they are, in effect, creating that User entity within the ULM Cloud datastore via the Onboard User with Email and Mobile or Onboard User with Social Account Processes. When a user authenticates into a service, the client application can then invoke the GET /user API to retrieve that User's details.

Users can have different types in the context of an association with other entities. For example, a User in a ULM Group can be designated as either the Primary, and Admin, or Regular type. That type is defined on the actual User-to-Group Association. But on the actual User entity itself, in isolation, ULM Cloud currently only supports a single RegularUser type. Additional entity types may be added in the future.

User Entity Default Properties

A ULM User entity contains the following default properties:

Property Definition Data Type Example
id Unique internal identifer for the ULM User. integer 123456789
type Type of User entity. Currently, only RegularUser is supported. string "com.uxpsystems.mint.user.RegularUser"
displayName Optional display-friendly name that the client UI can render. string "Jane Smith"
status Entity status of the User. Possible User statuses include:
- activating: The User has onboarded, but they have yet to verify their authN ID and fully activate.
- activated: The User has onboarded, has at least one verified authN ID.
- suspended: The User is temporarily suspended, and can be reactivated.
- deactivated: The User is permanently deactivated, and will be automatically deleted soon.
string "activated"
avatarUrl URL where the User's avatar image is stored.
Useful for client applications that want to include an avatar for the user's authenticated view.
string "http://client.myavatar/janesmith"
createdDate Date on which this entity was created, expressed in UNIX Epoch format. integer 1543833950000
activatedDate Date on which this entity was activated, expressed in UNIX Epoch format. integer 1527917430000
updatedDate Date on which this entity was last updated, expressed in UNIX Epoch format. integer 1538682581776
suspendedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1621622651675
deactivatedDate Date on which this entity was deactivated, expressed in UNIX Epoch format. integer 1794095435804
attributes Additional metadata about the entity.

User entities also contain attributes:

Attribute Definition Data Type Example
familyName User's family (or last) name. string smith
givenName User's given (or first) name. string jane
language User's preferred language, as per ISO 639-1:2002. string en
emails List that contains one more email addresses registered as this User's Authentication Identifiers (authN IDs). Each object includes: array of email objects
  id Unique internal identifier for the email registered as an authN ID. integer 257
  email Actual email address value. string jane_smith@email.ca
  status Current status of the authN ID. Possible statuses include:
- activated: authN ID is fully registered and verified.
- activating: authN ID is registered, but needs to be verified.
- pending: authN ID is registered to replace another authN ID, but needs to be verified.
string "activated"
  mfaOption Whether or not this authN ID is registered as an MFA option. boolean false
  label Optional label that the user can set. string "work email"
mobiles List that contains one or more mobile numbers registered as this User's Authentication Identifiers (authN IDs). Each object includes: array of mobile objects
  id Unique internal identifier for the mobile registered as an authN ID. integer 834328
  number Actual mobile number value. string "1234567890"
  status Current status of the authN ID. Possible statuses include:
- activated: authN ID is fully registered and verified.
- activating: authN ID is registered, but needs to be verified.
- pending: authN ID is registered to replace another authN ID, but needs to be verified.
string "activating"
  country Country code, as per ISO 3166. string "CA"
  mfaOption Whether or not this authN ID is registered as an MFA option. boolean true
  label Optional label that the user can set. string "personal phone"
aliases Array of one or more aliases registered by the user. Each object includes: array of alias objects
  id Unique internal identifier for the email registered as an authN ID. string 19743
  alias Actual alias value. string skippy
preferredNotificationChannel User's preferred external channel to receive notifications (e.g. email or SMS), taken from one of the registered authN IDs. Value format is: {object}.{propertyName},{id}.
For example, "mobiles.number,723419" means that the UI should look inside the mobiles object, and inspect the number value where the corresponding id is 723419.
string "emails.email,02781"
branding Indicator of branding to be used on a per-user level (e.g. differentiating between an operator's main brand and a discount brand).
Applicable to service providers with more than one brand, if they prefer to render a separate, distinct UI.
string "Maple"
socialConnections List of user's connections to social providers. Each object includes: array of SocialConnection objects
  id Internal (ULM) unique identifer number for the connection between this User and the given social account. integer 597
  socialId External unique identifier of the social account profile. In other words, this is the user's profile ID with the social provider.
This number is provided to ULM during the ULM-to-social account association.
string  
  providerId The name of the social provider in this connection. string "Facebook"
Secret2faTotp The shared secret between ULM Cloud for this User and an Authenticator App that the User has registered for Multi-factor Authentication. The value for is obfuscated. string  
domain The domain which the user onboarded onto ULM Cloud from. Useful as an alternate form to determine appropriate branding. string int.m1amdocs.com

Group

A ULM Group entity is a connective entity. It represents the grouping of multiple users, as well each individual end user's access to different services and functionality under an account or subscription (which are themselves represented by the Account, Subscription and Feature entities associated to the Group entity). The typical group represents a "household" group of family members.

See the ULM Associate Billing Account Process for more information on how ULM Cloud leverages ULM Groups and associations on the back end to enable account and service sharing for users on the front end of a given application.

Note: Remember that every association between each entity is unique, and contains its own flags and attributes. The exception to this is the "association" between an Account and it's Subscriptions and Features.

A ULM Group entity contains the following default properties:

Property Definition Data Type Example
id Unique internal identifier for this Group. integer 39846
type Specific type of Group entity. string "com.uxpsystems.mint.group.HouseholdUserGroup"
displayName Optional display-friendly name that the client UI can render. string "The Smith Family"
status ULM Entity status of the Group. The only possible status is activated. string "activated"
createdDate Date on which this entity was created, expressed in UNIX Epoch format. integer 1543833950000
activatedDate Date on which this entity was activated, expressed in UNIX Epoch format. integer 1543833950000
updatedDate Date on which this entity was last updated, expressed in UNIX Epoch format. integer 1621622651675
suspendedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1527917430000
deactivatedDate Date on which this entity was deactivated, expressed in UNIX Epoch format. integer 1794095435804
attributes Additional metadata about the entity.

Group entities also contain attributes:

Attribute Definition Data Type Example
maximumNumberOfMembers Maximum number of Users that can be associated to the Group. Attempts to exceed this number should be forbidden. string "5"

Account

A ULM Account is created using the Associate Account Process, using billing records in the Business/Operations Support System (B/OSS) or other integration with a service provider. ULM maps records from the billing system into a ULM Account entity.

The Account entity can also contain ULM Subscriptions (and each individual Subscription may contain its own Subscription-specific ULM Features). The actual record-to-entity mapping depends on the type of services provided by the business, the type of service provider's records and bulling system, and the specific integration between the service provider and UL Cloud. The ULM data model is flexible enough to consume most any set of customer records and map them to an Account/Subscription/Feature hierarchy of associated entities.

A ULM Account entity contains the following default fields:

Variable Purpose Data Type Example
id Unique internal identifier for this Account. integer "3298435"
type Specific type of Account entity. string "com.uxpsystems.mint.account.BillingAccount"
displayName A display-friendly name for this Account. string "Jane's Billing Account"
status ULM Entity status of the Account. string "activated"
createdDate Date on which this entity was created, expressed in UNIX Epoch format. integer 1543833950000
activatedDate Date on which this entity was activated, expressed in UNIX Epoch format. integer 1543833950000
updatedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1621622651675
suspendedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1527917430000
deactivatedDate Date on which this entity was deactivated, expressed in UNIX Epoch format. integer 1794095435804
subscriptions List of all ULM Subscriptions under the Account. array of ULM Subscriptions (if any)
  Note: Each individual ULM Subscription may contain, among other properties, its own array of distinct ULM Features.
attributes Additional metadata about the entity.

Account entities also contain attributes:

Attribute Definition Data Type Example
accountNumber Human-readable external account number as provided by an external B/OSS or other integration. string

 

"123456"
maxUsers The maximum number of users with which this account can be shared (i.e, associated). integer

 

5
paymentProviderAccountId Account identifier as stored and/or provided by a payment provider. string

 

"098765"
internalProviderAccountId If the account is provided by a component internal to MarketONE (e.g. Subscribe), this attribute contains the internal reference within the appropriate component. string

 

"509"
bssName The name of the B/OSS (or other integration) that provides the account data. string

 

"vindicia"
paymentDetail List of available payment methods for this Account. Each object contains: array of PaymentDetail objects
  paymentMethodId Unique identifier of the provider's payment method. string

 

"97b0915f6e65614462fdee6ffbc8385f3308188f"
  paymentMethodName Name of the provider's payment method. string

 

 
  active Whether or not the payment method is active. boolean

 

true
  primary Whether or not the payment method is the primary payment method for the account. boolean

 

false
  additionalFields Additional metadata related to this payment method object. string

 

 
bssAccounts List of accounts as stored in (and provided by) one or more B/OSS (or other integration) that provides account data. Each object contains: array of bssAccount objects
  accountId Unique identifier of the user's account in the B/OSS. string

 

"000123-45678"
  externalId Additional unique identifier specified by the B/OSS, if one exists. string

 

"123456"
  email Email address associated with the account in the B/OSS. string

 

"jane.smith@email.ca"
  language User's preferred language, per ISO 639-1:2002, as specified in the B/OSS. string

 

"en-us"
  name Name of the person associated with the account as specified in the B/OSS. string "John Doe"
  addresses List of addresses associated with the account as specified in the B/OSS. Each bssAddress object includes:  array of bssAddress objects

 

    name Name of the person or contact associated with this address. string "Jane Smith"
    street Full street name of the address. string "1 Yonge Street, Suite 405"
    city City name of the address. string "Toronto"
    county County name of the address, if applicable. string "Orange County"
    division Region the address is domiciled, if applicable. string  
    postalCode Postal code of the address. string "M5E 1E5"
    country Country in which the address resides. string "Canada"
    phone Primary phone number associated with this address. string "4161234567"
    fax Primary fax number associated with this address, if applicable. string "4160987654"
    latitude Latitudinal coordinates of this address. float 38.8951
    longitude Longitudinal coordinates of this address. float 77.0364
paymentProviderId The identifier of the payment provider for this account (e.g. Subscribe). string  

Subscription

A ULM Subscription represents an instance of a service, the purchase type (one-time or recurring payments), and the entitlement to that service based on the both the entity status and its association to a ULM User.

For example, if a ULM User is associated to a ULM Subscription entity that represents a paid streaming TV service, then this association itself can define the entitlements that end user has to the service. If the service involves a variety of functional capabilities, those functions may be captured as ULM Features associated to (i.e., contained within) the ULM Subscription entity. For example:

  • A customer's records in a billing system would be represented by a ULM Account.
  • A Mobile Service Plan (MSP) under the billing account would be represented by a ULM Subscription.
  • A special capability for the MSP (e.g., unlimited data) may be represented by a ULM Feature.

How the data from an external system maps to the Account/Subscription/Feature (A/S/F) hierarchy depends on the type of service, the type of service provider, the service provider's billing system, and the business needs defined during the initial integration between the service provider and ULM Cloud. The ULM data model is flexible enough to map most any external record data to the A/S/F hierarchy, but the needs may vary from tenant to tenant.

A ULM Subscription is "associated" with its parent Account at the moment the Subscription is created in ULM. A Subscription can not exist in ULM without a parent or container Account. Conversely, ULM Features cannot exist without a parent or container Subscription.

A ULM Subscription entity contains the following default fields:

Variable Purpose Data Type Example
id Unique internal identifier for this Subscription. integer "3298435"
type Specific type of Subscription entity. string No default or standard. The Subscription type is pulled from the service provider's external system, through the MarketONE SP API, and mapped within the Account/Subscription/Feature hierarchy according to a data mapping that is set during the initial onboarding and integration phase between ULM Cloud and a service provider.
displayName A display-friendly name for this Subscription. string "My Streaming Account"
status ULM Entity status of the Subscription. string "activated"
createdDate Date on which this entity was created, expressed in UNIX Epoch format. integer 1543833950000
activatedDate Date on which this entity was activated, expressed in UNIX Epoch format. integer 1543833950000
updatedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1621622651675
suspendedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1527917430000
deactivatedDate Date on which this entity was deactivated, expressed in UNIX Epoch format. integer 1794095435804
features List of all ULM Features under the Subscription. array of ULM Features (if any)
attributes Additional metadata about the entity.

Subscription entities also contain attributes:

Attribute Definition Data Type Example
subscriptionNumber Identifier for the subscription as stored and/or provided by a downstream B/OSS (or other integration) that provides the subscription data. string  
maxUsers The maximum number of users with which this subscription can be shared (i.e., associated). int  
paymentProviderSubscriptions List of subscriptions as stored in (and provided by) one or more B/OSS (or other integration) that provides subscription data. Each object contains: array of PaymentProviderSubscription objects  
  providerSubscriptionId Subscription identifier as defined by the service provider. string  
  internalProviderSubscriptionId Unique reference subscription identifier generated by the payment provider client when the Subscription was created. Field is optional and only populated if Provider supports it. string  
  productId Product unique identifier as defined by the payment provider which was purchased. string  
  subscriptionStartDate Date when the subscription was first purchased and started, expressed in UNIX Epoch format. integer 1603481359
  subscriptionEndDate Date when the subscription ends if it is not renewed, expressed in UNIX Epoch format. integer 1603481359
  maxUser: Maximum number of users that can consume the subscription, as defined by the payment provider. integer 5
  productDescription Name of the product attached to the service. string  
  billingState Current financial state of the subscription. string
(enum, one of: FREE_PERIOD, FREE, TRIAL, FREE_TRIAL, BILLING_COMPLETED, UNBILLED, GOOD_STANDING, OTHER)
"UNBILLED"
  serviceStatus Status of the subscription as defined by the payment provider. string(enum, one of: ACTIVE, ACTIVATION, SUSPENDED, CANCELLED, DELETED, DRYRUN, EXPIRED, INCOMPLETE, LEGACY_SUSPENDED, TRIALING, UNPAID, PAST_DUE, UNKNOWN, PROCESSING, PENDING_ACTIVATION, PENDING_CANCEL, PENDING_PAUSE, PENDING_RESUME, PAUSED, UPGRADED, OTHER) "PAUSED"
 

nextSubscriptionBillingDate

Date when a recurring subscription will bill the customer for their next period of service, expressed in UNIX Epoch format. integer 1603481359
  subscriptionPrice Price that was charged to the customer when the subscription was last billed for the current period of service. float 7.99
  nextSubscriptionPrice Price that will be charged to the customer when their subscription is billed for their next period of service. float 9.99
  subscriptionCurrency Currency the customer was charged in for the current service cycle, as per ISO 4217. string "CAD"
  nextSubscriptionCurrency Currency the customer will be charged in for the next service cycle, as per ISO 4217. string "CAD"
  purchaseSource Source (or channel) of the subscription purchase. string
(enum, one of: OPERATOR, MARKETPLACE, PUSH_NOTIFICATION)
"OPERATOR"
  serviceType Type of service purchase (i.e., one time purchase, or recurring payments). string
(enum, one of: RECURRING, ONE_TIME)
"ONE_TIME"
  additionalFields Additional metadata accompanies this PaymentProviderSubscription (if any). string  
  paymentMethod Payment method used for this subscription. PaymentDetail object (see the paymentDetail Account attribute above for list of properties)  

Feature

A ULM Feature represents a specific functionality offered, as part of a service, by a service provider. Alternatively, a service (Subscription) can be understood as simply a bundle of functional features, though there are no strict requirements for the relations between features and services. For example, if a user's streaming music service tier entitles them to download songs to a device, then the download capability could be represented by a Feature entity.

A Feature entity has the following default fields:

Variable Purpose Data Type Example
id Unique internal identifier for this Feature. integer "3298435"
type Specific type of Feature entity. string No default or standard. The Feature type is pulled from the service provider's external system, through the MarketONE SP API, and mapped within the Account/Subscription/Feature hierarchy according to a data mapping that is set during the initial onboarding and integration phase between ULM Cloud and a service provider.
displayName A display-friendly name for this Feature. string "Commercial-free Streaming"
status ULM Entity status of the Subscription. string "activated"
createdDate Date on which this entity was created, expressed in UNIX Epoch format. integer 1543833950000
activatedDate Date on which this entity was activated, expressed in UNIX Epoch format. integer 1543833950000
updatedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1621622651675
suspendedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1527917430000
deactivatedDate Date on which this entity was deactivated, expressed in UNIX Epoch format. integer 1794095435804
attributes Additional metadata about the entity.

Feature entities also contain attributes:

Attribute Definition Data Type
featureNumber An identifier for the feature, as stored and/or provided by a B/OSS (or other integration) that provides the Feature data. string
maxUsers The maximum number of users with which this Feature can be shared. integer

Runtime

A Runtime entity represents the software on which ULM is being accessed. Typical examples include web browsers on desktops, applications on mobile devices, or the firmware in embedded devices. In an example where a native mobile application on an iPhone is accessing ULM, ULM considers the application itself to be the runtime, not the underlying operating system (iOS) or the physical device itself (the iPhone).

The manipulation of Runtimes is restricted to creating them, deleting them, and editing their Attributes (if any). Runtimes and Users may have many-to-many relationships (associations).

A Runtime entity has the following default fields:

Variable Purpose Data Type Example
id Unique internal identifier for this Subscription. integer "3298435"
type The Runtime entity type. string  
displayName A display-friendly name for this Runtime. string "Jane's Android 4.1.1"
status ULM Entity status of the Subscription. string "activated"
createdDate Date on which this entity was created, expressed in UNIX Epoch format. integer 1543833950000
activatedDate Date on which this entity was activated, expressed in UNIX Epoch format. integer 1543833950000
updatedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1621622651675
suspendedDate Date on which this entity was suspended, expressed in UNIX Epoch format. integer 1527917430000
deactivatedDate Date on which this entity was deactivated, expressed in UNIX Epoch format. integer 1794095435804
guid Unique identification string for the Runtime. string "DEF123"
version The ULM client software's version. string "4.1.1"
buildType The type of build for the ULM client software (Ex. "Development Build", "Production Build"). string "Production"
platformType The OS that the client software is running on. string "android"
deviceType The Device form factor that the software is running on (Ex. "tablet", "PC"). string "mobile"
customer The Operator's name. string "Apple"
userAgent The HTTP user agent for this Runtime. string "Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; rk30sdk Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"
features List of all ULM Features under the Subscription. array of ULM Features (if any)
attributes Additional metadata about the entity.

Note: Currently, ULM Runtimes have no default attributes. However, Runtimes support attributes so that they can be easily provisioned in subsequent release versions of ULM Cloud.

Status

All ULM entities include a status property that represents the entity's status within the user lifecycle management.

Status Description Examples
Activating Provisioned but is not yet ready to be used or consumed. User signed up with ULM with an email address or mobile number, but they have yet to verify it.
Activated Activated and functionality its tied to is enabled. User identity has been verified. The status was changed from "activating" or "pending" to "activated."
Pending Similar to "Activating". User updated an existing email address or mobile number, but they have yet to verify it. The old email or mobile remains active until the new one is verified.
Suspended Temporarily deactivated but will likely be transitioned back to an activated state in the future. Its tied functionality is limited. Suspected hacking or security risk on a user profile causes their status change to "suspended".
Deactivated Permanently deactivated and optionally may be deleted from the system when necessary (e.g. after graceful period). Soft delete a user ID before a scheduled batch job destroys it permanently.

REST Operations

ULM REST APIs allow you to perform CRUD operations against ULM entities, to retrieve or update certain properties and attributes on each entity. However, you cannot update certain properties and attributes (e.g., a client application can read an entity's createdDate property, but it cannot update it). Consult the ULM APIs library in the MarketONE Developer Portal for the full list of APIs available to you. Each API lists the specific request parameter schema that the API will accept.

To perform actions against more protected entities and their properties/attributes, leverage ULM Processes instead.