A The Default ESS Subscriber Store Schema

This appendix explains the default schema for the Oracle Communications Evolved Application Server (OCECAS) subscriber server (ESS).

Understanding the Default ESS Objects

This section explains the structure of the ESS schema that OCECAS uses to specify and store subscriber data. Figure A-1 shows the top level schema objects. All of the objects in bold font are required, except for the referenced objects in the profile_data object.

Elements in the schema relate to data that is accessible from the control flow editor. For example, the $ref notation is a key, whose corresponding value indicates the name of the related external concept item.

Figure A-1 ESS Top Level Schema Objects

Description of Figure A-1 follows
Description of ''Figure A-1 ESS Top Level Schema Objects''

Figure A-2 shows a detail view of the ESS schema MMTel object and the objects that it references.

The referenced objects include these supplementary services objects:

  • CDIV - Communication Diversion

  • ICB - Incoming Call Barring

  • OCB - Outgoing Call Barring

  • OIP - Originating Identification Presentation

  • OIR - Originating Identification Restriction

  • TIP - Terminating Identification Presentation

  • TIR - Terminating Identification Restriction

  • FA - Flexible Alerting

  • FADefault - Flexible Alerting Default

  • FASpecific - Flexible Alerting Specific

  • CW - Communication Waiting

Figure A-2 ESS Schema MMTel Object

Description of Figure A-2 follows
Description of ''Figure A-2 ESS Schema MMTel Object''

Figure A-3 shows a detail view of the CommonRules and Translations objects. The CommonRules object specifies parameters for using supplementary services that require them. For example start and stop times for the service to take effect.

You use the Translations object to change subscriber IDs. This object translates IDs from the TranslationA block of name-value paris, to the different values in the TranlationB block of name-value pairs. The change can be a simple number switch, or you could change the number value, or format, or both. In this example, only one name matches (tel:901), so that is the only ID translated. It changes from tel:+133455601001 to tel:+133455601002:

 "Translations": {
  "TranslationA": {
   "tel:901;phone-context=shortcode": "tel:+133455601007",
   "tel:901;noa=unknown;phone-context=oracle.occas.csp": "tel:+133455601001",
   "sip:c1@personal.redirect.com": "sip:called@full.address.com"
    },
 "TranslationB": {
   "tel:902;phone-context=shortcode": "tel:+133455601008",
   "tel:901;noa=unknown;phone-context=oracle.occas.csp": "tel:+133455601002",
   "sip:c2@personal.redirect.com": "sip:called2@full.address.com"
  }
 }

Figure A-3 ESS Schema CommonRules and translations Objects

Description of Figure A-3 follows
Description of ''Figure A-3 ESS Schema CommonRules and translations Objects''

Default Subscriber Record

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Schema for Udr Subscriber data",
  "type": "object",
  "properties": {
    "version": "integer",
    "userIdentifiers": { "$ref": "#/definitions/userIdentifiers" },
    "jsonData": {
      "type": "object",
      "properties" : {
        "oracle.occas.csp.app.sdc.OCECASUser": {
          "type": "object",
          "properties": {
            "Description": { "type": "string" },
            "ServiceProviders": { "$ref": "#/definitions/ServiceProviders" }
          },
          "required": ["ServiceProviders"],
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  },
  "patternProperties": {
    "_N_.*": { "type": "string" }
  },
  "required": ["userIdentifiers", "jsonData"],
  "additionalProperties": false,
 
 
  "definitions": {
    "userIdentifiers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id":   { "type": "string" },
          "type": { "enum": [
            "END_USER_E164", "END_USER_IMSI", "END_USER_SIP_URI",
            "END_USER_NAI", "END_USER_PRIVATE", "END_USER_GLOBAL_UID"
          ]
          }
        },
        "required": ["id", "type"],
        "additionalProperties": false
      },
      "additionalItems": false,
      "minItems": 1
    },
 
    "ServiceProviders": {
      "type": "object",
      "patternProperties": {
        "^[a-zA-Z0-9][a-zA-Z0-9_]*$": {
          "type": "object",
          "properties": {
            "services": { "$ref": "#/definitions/services" },
            "profile_data": { "$ref": "#/definitions/profile_data" },
            "MMTel": { "$ref": "#/definitions/MMTel" },
            "MMTelOperator": { "$ref": "#/definitions/MMTelOperator" }
          },
          "required": ["services", "profile_data"],
          "additionalProperties": false
        }
      },
      "minProperties": 1,
      "additionalProperties": false
    },
 
    "services": {
      "type": "object",
      "patternProperties": {
        "^[a-zA-Z0-9][a-zA-Z0-9_]*$": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "minProperties": 1
    },
 
    "profile_data": {
      "type": "object",
      "properties": {
        "Language": { "type": "string" },
        "CallFwdCompany": { "type": "string" },
        "CallCount": { "type": "integer" },
        "DayOfWeek": { "type": "integer" },
        "EndTime": { "type": "string" },
        "StartTime": { "type": "string" },
        "TimeNow": { "type": "string" },
        "ToNumber": { "type": "string" },
        "Timezone": { "type": "string" },
        "VMRedirect": { "type": "string" },
        "WebServicesURL": { "type": "string" },
        "WebServicesParams": { "type": "array" },
        "Translations": { "$ref": "#/definitions/translations" }
      }
    },
 
    "MMTel": {
      "type": "object",
      "properties": {
        "CDIV": { "$ref": "#/definitions/CDIV" },
        "ICB": { "$ref": "#/definitions/ICB" },
        "OCB": { "$ref": "#/definitions/OCB" },
        "OIP": { "$ref": "#/definitions/OIP" },
        "OIR": { "$ref": "#/definitions/OIR" },
        "TIP": { "$ref": "#/definitions/TIP" },
        "TIR": { "$ref": "#/definitions/TIR" },
        "FA":  { "$ref": "#/definitions/FA" },
        "FADefault": { "$ref": "#/definitions/FADefault" },
        "FASpecific": { "$ref": "#/definitions/FASpecific" },
        "CW": { "$ref": "#/definitions/CW" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": true
    },
 
    "MMTelOperator": {
      "type": "object",
      "properties": {
        "CDIV": { "$ref": "#/definitions/CDIV" },
        "ICB": { "$ref": "#/definitions/ICB" },
        "OCB": { "$ref": "#/definitions/OCB" },
        "OIP": { "$ref": "#/definitions/OIP" },
        "OIR": { "$ref": "#/definitions/OIR" },
        "TIP": { "$ref": "#/definitions/TIP" },
        "TIR": { "$ref": "#/definitions/TIR" },
        "FA":  { "$ref": "#/definitions/FA" },
        "FAGroup": { "$ref": "#/definitions/FAGroup" },
        "CW": { "$ref": "#/definitions/CWOperator" }
      }
    },
 
    "translations": {
      "type": "object",
      "properties": {
        "TranslationA": { "$ref": "#/definitions/translation" },
        "TranslationB": { "$ref": "#/definitions/translation" }
      },
      "additionalProperties": false
    },
 
    "translation": {
      "type": "object",
      "patternProperties": {
        "^[a-zA-Z0-9][a-zA-Z0-9_@:;.=-]*$": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
 
    "OIR": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Mode": { "type": "string" },
        "Default": { "type": "string" },
        "Restriction": { "type": "string" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": true
    },
 
    "OIP": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "TIR": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Mode": { "type": "string" },
        "Default": { "type": "string" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "TIP": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "CDIV": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/CommonRules" }
        }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": true
    },
 
    "ICB": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/ICBRules" }
        }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "OCB": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/OCBRules" }
        }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "FADefault": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "FASpecific": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Groups": {
          "type": "array",
          "items": { "$ref": "#/definitions/FAIdentity" }
        }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "FAIdentity": {
      "type": "object",
      "properties": {
        "Identity": { "type": "string" },
        "Active": { "type": "boolean" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "FA": {
      "type": "object",
      "properties": {
        "Authorized": { "type": "boolean" },
        "DefaultGroup": { "type": "string" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "FAGroup": {
      "type": "object",
      "properties": {
        "Authorized": { "type": "boolean" },
        "Identity": { "type": "string" },
        "Type": { "type": "string" },
        "Membership": { "type": "string" },
        "Members": {
          "type": "array",
          "items": { "$ref": "#/definitions/FAGroupMember" }
        }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "FAGroupMember": {
      "type": "object",
      "properties": {
        "Identity": { "type": "string" },
        "Active": { "type": "boolean" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "CW": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "CWOperator": {
      "type": "object",
      "properties": {
        "Authorized": { "type": "boolean" },
        "CallingUserNotification": { "type": "boolean" },
        "WaitingTimer": { "type": "integer" }
      },
      "additionalProperties": false
    },
 
    "CommonRules": {
      "type": "object",
      "properties": {
        "DayOfWeek": { "type": "integer" },
        "EndTime": { "type": "string" },
        "StartTime": { "type": "string" },
        "Validity": { "type": "array", "items": { "$ref": "#/definitions/Validity" } },
        "Anonymous": { "type": "boolean" },
        "IdentityList": { "type": "array", "items": { "type": "string" } },
        "DomainList": { "type": "array", "items": { "$ref": "#/definitions/DomainList" } },
        "RuleDeactivated": { "type": "boolean" },
        "Target": { "type": "string" },
        "Busy": { "type": "boolean" },
        "NotRegistered": { "type": "boolean" },
        "NotReachable": { "type": "boolean" },
        "NoAnswer": { "type": "boolean" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": true
    },
 
    "ICBRules": {
      "type": "object",
      "properties": {
        "DayOfWeek": { "type": "integer" },
        "EndTime": { "type": "string" },
        "StartTime": { "type": "string" },
        "Validity": { "type": "array", "items": { "$ref": "#/definitions/Validity" } },
        "Anonymous": { "type": "boolean" },
        "IdentityList": { "type": "array", "items": { "type": "string" } },
        "DomainList": { "type": "array", "items": { "$ref": "#/definitions/DomainList" } },
        "CommunicationDiverted": { "type": "boolean" },
        "Roaming": { "type": "boolean" },
        "RuleDeactivated": { "type": "boolean" },
        "Allow": { "type": "boolean" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": true
    },
 
    "OCBRules": {
      "type": "object",
      "properties": {
        "DayOfWeek": { "type": "integer" },
        "EndTime": { "type": "string" },
        "StartTime": { "type": "string" },
        "Validity": { "type": "array", "items": { "$ref": "#/definitions/Validity" } },
        "IdentityList": { "type": "array", "items": { "type": "string" } },
        "DomainList": { "type": "array", "items": { "$ref": "#/definitions/DomainList" } },
        "International": { "type": "boolean" },
        "InternationalExHC": { "type": "boolean" },
        "Roaming": { "type": "boolean" },
        "RuleDeactivated": { "type": "boolean" },
        "Allow": { "type": "boolean" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": true
    },
 
    "DomainList": {
      "type": "object",
      "properties": {
        "Identity": { "type": "string" },
        "DomainExceptList": { "type": "array", "items": { "type": "string" } },
        "IdentityExceptList": { "type": "array", "items": { "type": "string" } }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": true
    },
 
    "Validity": {
      "type": "object",
      "properties": {
        "From": { "type": "string" },
        "Until": { "type": "string" }
      },
      "patternProperties": {
        "_N_.*": { "type": "string" }
      },
      "additionalProperties": true
    }
 
  }
 }