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-1LSS Top Level Schema Objects

Description of Figure A-1 follows
Description of "Figure A-1LSS Top Level Schema Objects"

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

The referenced objects include these supplementary services objects:

  • ACR - Anonymous Communication Rejection

  • CFNL - Communication Forwarding Not Logged In

  • CFNR - Communication Forwarding No Reply

  • CFNRc - Communication Forwarding Not Reachable

  • CFB - Communication Forwarding on Busy

  • CFU - Communication Forwarding Unconditional

  • ICB - Incoming Call Barring

  • OCB - Outgoing Call Barring

  • OIP - Originating Identification Presentation

  • OIR - Originating Identification Restriction

  • TIP - Terminating Identification Presentation

  • TIR - Terminating Identification Restriction

Figure A-2LSS Schema profile_data Object

Description of Figure A-2 follows
Description of "Figure A-2LSS Schema profile_data 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-3LSS Schema CommonRules and translations Objects

Description of Figure A-3 follows
Description of "Figure A-3LSS Schema CommonRules and translations Objects"

See "The Default ESS Subscriber Store Schema" for the complete ESS schema JSON file.

Default Subscriber Record

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Schema for Udr Subscriber data",
  "type": "object",
  "properties": {
    "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
        }
      }
    }
  },
  "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" }
          },
          "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" },
        "ACR": { "$ref": "#/definitions/ACR" },
        "CFNL": { "$ref": "#/definitions/CFNL" },
        "CFNR": { "$ref": "#/definitions/CFNR" },
        "CFNRc": { "$ref": "#/definitions/CFNRc" },
        "CFB": { "$ref": "#/definitions/CFB" },
        "CFU": { "$ref": "#/definitions/CFU" },
        "ICB": { "$ref": "#/definitions/ICB" },
        "OCB": { "$ref": "#/definitions/OCB" },
        "OIP": { "$ref": "#/definitions/OIP" },
        "OIR": { "$ref": "#/definitions/OIR" },
        "TIP": { "$ref": "#/definitions/TIP" },
        "TIR": { "$ref": "#/definitions/TIR" }
      },
      "additionalProperties": false
    },
 
    "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" }
      },
      "additionalProperties": false
    },
 
    "OIP": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" }
      },
      "additionalProperties": false
    },

    "ACR": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" }
      },
      "additionalProperties": false
    },
 
    "TIR": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Mode": { "type": "string" },
        "Default": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "TIP": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" }
      },
      "additionalProperties": false
    },
 
    "CFU": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/CommonRules" }
        }
      },
      "additionalProperties": false
    },
 
    "CFB": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/CommonRules" }
        }
      },
      "additionalProperties": false
    },
 
    "CFNR": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/CommonRules" }
        }
      },
      "additionalProperties": false
    },
 
    "CFNRc": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/CommonRules" }
        }
      },
      "additionalProperties": false
    },
 
    "CFNL": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/CommonRules" }
        }
      },
      "additionalProperties": false
    },
 
    "ICB": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/ICBRules" }
        }
      },
      "additionalProperties": false
    },
 
    "OCB": {
      "type": "object",
      "properties": {
        "Active": { "type": "boolean" },
        "Rules": {
          "type": "array",
          "items": { "$ref": "#/definitions/OCBRules" }
        }
      },
      "additionalProperties": false
    },
 
    "CommonRules": {
      "type": "object",
      "properties": {
        "DayOfWeek": { "type": "integer" },
        "EndTime": { "type": "string" },
        "StartTime": { "type": "string" },
        "EndDateTime": { "type": "string" },
        "StartDateTime": { "type": "string" },
        "Anonymous": { "type": "boolean" },
        "IdentityList": { "type": "array", "items": { "type": "string" } },
        "IdentityExceptList": { "type": "array", "items": { "type": "string" } },
        "DomainList": { "type": "array", "items": { "type": "string" } },
        "DomainExceptList": { "type": "array", "items": { "type": "string" } },
        "RuleDeactivated": { "type": "boolean" },
        "Target": { "type": "string" }
      },
      "additionalProperties": false
    },
 
    "ICBRules": {
      "type": "object",
      "properties": {
        "DayOfWeek": { "type": "integer" },
        "EndTime": { "type": "string" },
        "StartTime": { "type": "string" },
        "EndDateTime": { "type": "string" },
        "StartDateTime": { "type": "string" },
        "Anonymous": { "type": "boolean" },
        "IdentityList": { "type": "array", "items": { "type": "string" } },
        "IdentityExceptList": { "type": "array", "items": { "type": "string" } },
        "DomainList": { "type": "array", "items": { "type": "string" } },
        "DomainExceptList": { "type": "array", "items": { "type": "string" } },
        "CommunicationDiverted": { "type": "boolean" },
        "Roaming": { "type": "boolean" },
        "RuleDeactivated": { "type": "boolean" },
        "Allow": { "type": "boolean" }
      },
      "additionalProperties": false
    },
 
    "OCBRules": {
      "type": "object",
      "properties": {
        "DayOfWeek": { "type": "integer" },
        "EndTime": { "type": "string" },
        "StartTime": { "type": "string" },
        "EndDateTime": { "type": "string" },
        "StartDateTime": { "type": "string" },
        "IdentityList": { "type": "array", "items": { "type": "string" } },
        "IdentityExceptList": { "type": "array", "items": { "type": "string" } },
        "DomainList": { "type": "array", "items": { "type": "string" } },
        "DomainExceptList": { "type": "array", "items": { "type": "string" } },
        "International": { "type": "boolean" },
        "InternationalExHC": { "type": "boolean" },
        "Roaming": { "type": "boolean" },
        "RuleDeactivated": { "type": "boolean" },
        "Allow": { "type": "boolean" }
      },
      "additionalProperties": false
    }
  }
 
}