UDR Bulk Import-Export File
UDR Bulk Import-Export File
UDR Bulk Import-Export File
Specification
F17455-01
April 2019
CAUTION: Use only the Installation procedure included in the Install Kit.
Before installing any system, access My Oracle Support (MOS)
(https://support.oracle.com) and review any Technical Service Bulletins (TSBs) that
relate to this procedure.
My Oracle Support (MOS) (https://support.oracle.com) is your initial point of contact
for all product support and training needs. A representative at Customer Access
Support (CAS) can assist you with My Oracle Support registration.
Call the CAS main number at 1-800-223-1711 (toll-free in the US), or call the Oracle
Support hotline for your local country from the list at
http://www.oracle.com/us/support/contact/index.html.
See more information on My Oracle Support inAppendix B.
Oracle Communications User Data Repository Bulk Import/Export File Specification, Release 12.5.1
F17455-01
Copyright ©2014, 2019 Oracle and/or its affiliates. All rights reserved.
This software and related documentation are provided under a license agreement containing restrictions on use and
disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or
allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit,
perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of
this software, unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any
errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the
U.S. Government, then the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs
installed on the hardware, and/or documentation, delivered to U.S. Government end users are “commercial computer
software” pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such,
use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated
software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license
restrictions applicable to the programs. No other rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management applications. It is not
developed or intended for use in any inherently dangerous applications, including applications that may create a risk of
personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all
appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates
disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their
respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under
license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the
AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of
The Open Group.
This software or hardware and documentation may provide access to or information about content, products, and services
from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any
kind with respect to third-party content, products, and services unless otherwise set forth in an applicable agreement
between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages
incurred due to your access to or use of third-party content, products, or services, except as set forth in an applicable
agreement between you and Oracle.
Oracle Communications User Data Repository Bulk Import/Export File Specification
Table of Contents
CHAPTER 1. INTRODUCTION............................................................................................... 8
1.1 Purpose and Scope ......................................................................................................... 8
1.2 References...................................................................................................................... 8
1.3 Glossary .......................................................................................................................... 8
List of Figures
Figure 1: User Data Repository High Level Architecture .............................................................................11
Figure 2: Import Log File—Import Successfully Completed Example .........................................................25
Figure 3: Import Log File—Import Interrupted Example .............................................................................25
Figure 4: Import Status ................................................................................................................................26
Figure 5: Generating Output File .................................................................................................................27
Figure 6: Export Schedule (Display) .............................................................................................................32
Figure 7: Export Schedule (Insert) ...............................................................................................................33
Figure 8: Export Schedule (Edit) ..................................................................................................................33
Figure 9: Export Schedule (Delete) ..............................................................................................................34
Figure 10: Export Status ..............................................................................................................................34
Figure 11: Data Model .................................................................................................................................37
List of Tables
Table 1: Glossary ........................................................................................................................................... 8
Table 2: Message Conventions ....................................................................................................................18
Table 3: Import Request Operations ...........................................................................................................19
Table 4 keyValue Validation ....................................................................................................................21
Table 5: Import File Comment Format ........................................................................................................23
Table 6: Import Log File Format ..................................................................................................................24
Table 7: Import Log File Parameters ...........................................................................................................24
Table 8: Import Status Table .......................................................................................................................26
Table 9: Subscriber Profile Entity Definition ...............................................................................................38
Table 10: Quota Entity Definition ................................................................................................................40
Table 11: State Entity Definition..................................................................................................................41
Table 12: Dynamic Quota Entity Definition .................................................................................................41
Table 13: Pool Profile Entity Definition .......................................................................................................42
Table 14: Summary of Subscriber Profile Commands .................................................................................46
Table 15: Summary of Pool Profile Commands ...........................................................................................62
Table 16: Summary of Additional Pool Commands .....................................................................................67
Table 17: Summary of General Editing Commands.....................................................................................74
Table 18: Summary of Special Operation Commands ...............................................................................109
Table 19: Summary of Restore Commands ...............................................................................................113
Table 20: Error Codes ................................................................................................................................125
Table 21: Bulk Import/Export variables .....................................................................................................129
Chapter 1. Introduction
1.2 References
The following external document references capture the source material used to create this document.
[1] IMS Sh interface; Signalling flows and message contents, 3GPP TS 29.328, Release 11
[2] Sh interface based on the Diameter protocol; Protocol details, 3GPP TS 29.329, Release 11
[3] User Data Convergence (UDC); Technical realization and information flows; Stage 2, 3GPP TS 23.335,
Release 11
[4] SDM v9.3 Subscriber Provisioning Reference Manual, 910-6870-001, Revision A, January 2014
1.3 Glossary
This section lists terms and acronyms specific to this document.
Table 1: Glossary
Acronym/Term Definition
ACID Atomic, Consistent, Isolatable, Durable
CFG Configuration Data—data for components and system identification and configuration
DP Database Processor
IP Internet Protocol
Acronym/Term Definition
MEAL Measurements, Events, Alarms, and Logs
MP Message Processor
NA Not Applicable
NE Network Element
PS Provisioning System
VIP Virtual IP
2.1 Overview
Oracle Communications User Data Repository (UDR) performs the function of an SPR, which is a database
system that acts as a single logical repository that stores subscriber data. The subscriber data that traditionally
has been stored into the HSS, HLR, AuC, and Application Servers, is stored in UDR as specified in 3GPP UDC
information model [3]. UDR facilitates the share and the provisioning of user related data throughout services of
3GPP system. Several Applications Front Ends, such as: one or more PCRF, HSS, HLR, or AuCFEs can be served by
UDR.
The data stored in UDR can be permanent and temporary data. Permanent data is subscription data and relates
to the required information the system needs to perform the service. User identities (MSISDN, IMSI IMEI, NAI
and AccountId), service data (service profile) and authentication data are examples of the subscription data. This
kind of user data has a lifetime as long as the user is permitted to use the service and may be modified by
administration means. Temporary subscriber data is dynamic data which may be changed as a result of normal
operation of the system or traffic conditions (transparent data stored by Application Servers for service
execution, user status, usage, and so on).
Oracle Communications User Data Repository is a database system providing the storage and management of
subscriber policy control data for PCRF nodes. Subscriber/Pool data is created/retrieved/modified or deleted
through the provisioning or by the Sh interface peers (PCRF). The following subscriber/pool data is stored in
Oracle Communications User Data Repository:
• Subscriber
o Profile
o Quota
o State
o Dynamic Quota
• Pool
o Pool Profile
o Pool Quota
o Pool State
o Pool Dynamic Quota
Figure 1 illustrates a high level the Oracle Communications User Data Repository Architecture.
Oracle Communications User Data Repository consists of several functional blocks. The Message Processors
(MP) provide support for a variety of protocols that entail the front-end signaling to peer network nodes. The
back-end UDR database resides on the N-OAMP servers.
As the product evolves forward, the subscriber profiles in UDR can be expanded to support data associated with
additional applications. Along with that, the MPs can be expanded to support additional Diameter interfaces
associated with these applications. The IPFE can be integrated with the product to facilitate signaling
distribution across multiple MP nodes.
The Network level OAMP server (NOAMP) shown in the architecture provides the provisioning, configuration
and maintenance functions for all the network elements under it.
System level OAM server (SOAM) is a required functional block for each network element which gets data
replicated from NOAMP and in turn replicates the data to the message processors.
MP functions as the client-side of the network application, provides the network connectivity and hosts network
stack such as Diameter, SOAP, LDAP, SIP and SS7.
Figure 1: User Data Repository High Level Architecture
The bulk import provisioning interface provides data manipulation commands for subscribers and pools.
All block transactions must also satisfy limits indicated by the Maximum Provisioning Backend Response Timeout
and Transaction Durability Timeout system variables, which are defined in 9.1.2Appendix A. If any of those limits
are exceeded, the transaction is aborted and automatically rolled back.
NOTES
• The relevant transaction related measurements are incremented once per <transaction> request (by
+1), ProvTxnCommitted, TxProvTxnFailed or TxProvTxnAborted.
• The <restoreSubscriber> and <restorePool> requests cannot be used in a <transaction>.
Request Format
<transaction>
<txRequest id="id1">
request1
</txRequest>
[
<txRequest id="id2">
request2
</txRequest>
:
<txRequest id="idN">
requestN
</txRequest>
]
</transaction>
Examples
Request
This request creates 2 subscribers, and updates another subscriber.
<transaction>
<txRequest id="1">
<createSubscriber>
<key>
<MSISDN>15141234567</MSISDN>
<IMSI>302370123456789</IMSI>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="MSISDN">15141234567</field>
<field name="IMSI">302370123456789</field>
<field name="BillingDay">5</field>
<field name="Tier">Gold</field>
<field name="Entitlement">DayPass</field>
</subscriber>
]]>
</content>
</entity>
</createSubscriber>
</txRequest>
<txRequest id="2">
<createSubscriber>
<key>
<MSISDN>14505551234</MSISDN>
<IMSI>302370999999999</IMSI>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="MSISDN">14505551234</field>
<field name="IMSI">302370999999999</field>
<field name="BillingDay">1</field>
<field name="Tier">Silver</field>
<field name="Entitlement">DayPass</field>
</subscriber>
]]>
</content>
</entity>
</createSubscriber>
</txRequest>
<txRequest id="3">
<updateField clearAll="true">
<key>
<MSISDN>14165555555</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="BillingDay">23</field>
<field name="Tier">Gold</field>
</fields>
</entity>
</updateField>
</txRequest>
</transaction>
i. Create subscriber #1
ii. Update subscriber #1
iii. Update subscriber #1
o Then the first command run was (3) to update the subscriber, which fails because the subscriber did
not exist. Then (2) cannot occur next, and the update fails because the subscriber did not exist, and
then finally (1) creates the subscriber, but at the end of the import operation the subscriber data
does not contain the updates made in (2) and (3).
o By creating a transaction such as:
<transaction>
Create Subscriber #1
Update Subscriber #1
Update Subscriber #1
</transaction>
2.5.2 ACID-Compliance
The bulk import interface supports Atomicity, Consistency, Isolation and Durability (ACID)-compliant database
transactions which guarantee transactions are processed reliably.
Atomicity
Database manipulation requests are atomic. If one database manipulation request in a transaction fails, all of
the pending changes can be rolled back by the client, leaving the database as it was before the transaction was
initiated. However, the client also has the option to close the transaction, committing only the changes in the
transaction that were performed successfully. If any database errors are encountered while committing the
transaction, all updates are rolled back and the database is restored to its previous state.
Consistency
Data across all requests performed inside a transaction is consistent.
Isolation
All database changes made in a transaction by one client are not viewable by any other clients until the changes
are committed by closing the transaction. In other words, all database changes made in a transaction cannot be
seen by operations outside of the transaction.
Durability
After a transaction is committed and becomes durable, it persists and is not be undone. Durability is achieved by
completing the transaction with the persistent database system before acknowledging commitment. SOAP and
REST Provisioning clients only receive SUCCESS responses for transactions that have been successfully
committed and have become durable.
NOTE: For bulk import, requests are considered if the database transaction is committed successfully. The bulk
import tool does not wait until the transaction has become durable before moving onto the next request. But,
requests become durable a short time after.
The system recovers committed transaction updates in spite of system software or hardware failures. If a failure
(loss of power) occurs in the middle of a transaction, the database returns to a consistent state when it is
restarted.
Data durability signifies the replication of the provisioned data to different parts of the system before a
response is provided for a provisioning transaction. The following additive configurable levels of durability are
supported:
• Durability to the disk on the active provisioning server (just 1)
• Durability to the local standby server memory (1 + 2)
• Durability to the active server memory at the Disaster Recovery site (1 + 2 + 3)
Multiple values for the same key type are also allowed, such as if a subscriber has two provisioned IMSIs, the
following is allowed.
<deleteField>
<key>
<IMSI>302370123456789</IMSI>
<IMSI>184569547984229</IMSI>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
:
UDR supports as many keys that are allowed for a subscriber in the request.
NOTE: For pool based requests, only a single PoolID is allowed. It is not allowed to mix PoolID and subscriber key
values in the same request, and doing so results in an InvalidInputXML error response. For example, the
following is not allowed:
<deleteField>
<key>
<IMSI>302370123456789</IMSI>
<PoolID>100000</PoolID>
</key>
<entity>
:
Symbol Description
italics Parameter values that are replaced by an actual parameter name or numeric value.
Angle brackets are used to enclose parameter values that are choices or names. For
example, in parameter1 <1|2|3>, the numbers represent specific value choices.
<> In parameter2 <ServerName>, the ServerName represents the actual value. In
parameter3 <0…3600>, the numbers represent a choice in the range from 0 to
3600.
Square brackets are used to enclose an optional parameter and its value, such as [,
[] parameter1 <1|2|3>]. A parameter and its value that are not enclosed in square
brackets are mandatory.
When the pipe symbol is used in a parameter value list, such as Parameter1
|
<1|2|3>, it indicates a choice between available values.
, A literal comma is used in the message to separate each parameter that is specified.
3.2 Import
UDR supports mechanisms to support file-based bulk loading of subscriber data. Subscriber data records can be
entered by reading files which contain the set of transactions to be processed. The import process is non-
blocking, it runs together with Provisioning updates as well as network (Sh) updates.
management storage area on the active server. This local directory is /var/TKLC/db/filemgmt/provimport and
is displayed in Provisioning Options (see 9.1.2Appendix A). For a file to be imported it must:
• Be properly named
XML import files must have *.ixml file extensions.
• Have been placed in the remote directory after the time when the import last ran
• Must not have been previously imported
o A file that has been imported into the local directory is not imported again, even if its status is failed.
o To import a previously failed file, correct the file as necessary, rename the file, and then place the
renamed file in the remote directory.
NOTE: The renamed file must have a file update timestamp later than the last imported file, or UDR
does not process it
After fully downloaded, each file is automatically imported into the Provisioning Database sequentially in the
order in which their download completed. The order of imported files is also indicated on the Main Menu of the
UDR GUI and selecting UDR Maintenance Import Status screen. The import file is validated one command
at a time and the import continues if a command fails. Failed commands are listed in the import log file (see
section 3.2.5).
An Import file may contain as many requests as the storage media used to hold the import file allows.
<key>
<keyName>keyValue</keyName>
</key>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
<xpath>dataXpath</xpath>
<type>dataType<type>
<version>
<name>versionName</name>
<value>versionValue</value>
</version>
</data>
<fields>
<field name="fieldName" [delete="deleteField"]>fieldValue</field>
</fields>
<content>
entityContent
</content>
</entity>
<members>
<member>
<keyName>keyValue</keyName>
</member>
</members>
</requestName>
NOTE: Each request is formatted on a single line only. It is expanded for readability.
The requestName element indicates the request type, such as <createSubscriber>, <updateField>. See Table
3 for the full list of request name values.
The create attribute is used to indicate that the row in an entity is created if it does not exist. Possible values of
create are true or false. Note: this attribute is only applicable to the <updateFieldSet> request.
The createEntityIfNotExist attribute is used to indicate that the entity being updated is created if it does not
exist before applying the update to create the entity/row. Possible values of createEntityIfNotExist are true or
false. Note: this attribute is only applicable to the <create> and <updateFieldSet> requests.
The clearAll attribute is used to indicate that when a field is being updated, if all existing values in the field are
cleared before applying the update. Possible values of clearAll are true or false. Note: this attribute is only
applicable to the <updateField> request. Note: For fields that are not multi-value (single value), the value of
clearAll must be set to true otherwise the request attempts to add a second instance of the field, and the
request fails.
The inTx attribute is used to indicate that the request is in a transaction. Possible values of inTx are true or
false. Note: this optional attribute is present on every operation, but has no use for requests in import files,
and this attribute is omitted.
NOTE: Because this attribute does not affect any requests, it is not listed in the subsequent sections describing
each request.
Most commands identify the subscriber for which the provisioning request is being made by specifying the
subscriber addresses in the <key> element. When present, a key type/value must be provided. Depending on
the command, keyType can be IMSI, MSISDN, IMEI, NAI, AccountId, or PoolID. The value of the key (of the
indicated key type) is set in keyValue.
Depending on the keyType, the keyValue is validated as shown in Table 4.
Table 4 keyValue Validation
NOTE: Multiple subscriber key values may be supplied. If UDR is configured to allow this, when attempting to
find the subscriber, all key values supplied must be valid for the single subscriber in order to match the
subscriber. For more details see section 2.7.
The dataName element identifies the provisioning entity type on which the request is being performed on.
Values are either Subscriber, Quota, State, DynamicQuota, Pool, PoolQuota, PoolState, or
PoolDynamicQuota depending on the request, which matches the configured Entity values in the SEC for the
XML import interface.
The dataInterface element must be set to XMLIMPORT for bulk import requests.
When a request is made for a subscriber having msisdn/imsi ranges (for vMNP based systems), dataType must
be set to range for bulk importing such subscibers.
When a request is performing an action on a specific field or row in an entity (such as updating a field value in a
specific quota row), the XML XPath expression which references the row to be created/updated must be
specified in dataXpath. The dataXpath value can indicate the base element, or row name optionally including a
particular instance (the <cid> field in a Quota row, or the <InstanceId> field in a DynamicQuota row) when the
row name is the same.
The <version> element is only used when creating a entity when creating a row instance (using the
<updateFieldSet> request). The <name> and <version> elements in are used to indicate (if required) which
version of the transparent entity (if more than one are defined) to create the entity with by default. The
versionName and versionValue values indicate entry defined in the SEC to use.
When a field value is included to be set (for example in an insert/update request), a <fields> element is
present. In this, zero, one, or many <field name="fieldName">fieldValue</field> elements are present. The
fieldName indicates the name of the field being set, and the fieldValue is the value to set it to. A <field>
element may contain the optional deleteField attribute, that when set to true indicates that during an
<updateField> request that the specific field is to be deleted not updated. It is also possible to specify a specific
field value to indicate that the field is deleted if the current value matched.
NOTE: When specifying fields in a <fields> element, field order is not important. The fields defined for an
entity do not have to be specified in the order they are defined in the SEC.
When a field is a list type (such as entitlement in profile), multiple instances of the field element is specified.
When entityContent is to be set as an XML data blob, the blob data isincluded in the constructs of an XML
CDATA section. The CDATA section starts with <![CDATA[, then the entityContent containing the XML data blob,
and the CDATA section ends with ]]>.
The <members> element is used to contain the list of subscribers when adding or removing a subscriber to/from
a pool using the <addPoolMember> and <deletePoolMember> requests. A single key (identified by keyName and
keyValue) for each individual subscriber is contained in individual <member> elements.
Case Sensitivity
The constructs that bulk import requests are made up of (such as <updateField>, <key>, <entity>, <xpath>)
are case-sensitive. Exact case must be followed for all the commands described in this document, or the request
fails.
For example, the following is valid:
<addPoolMember>
<key>
<PoolID>100000</PoolID>
</key>
<members>
<member>
<MSISDN>15141234567</MSISDN>
</member>
</members>
</addPoolMember>
Request names defined in requestName are case-sensitive, for example createSubscriber, updateField, and
addPoolMember.
Entity names defined in dataName are not case-sensitive.
Entity field or key names/attributes in fieldName, keyName or versionName are not case-sensitive.
Entity field/key values are case-sensitive, for example fieldValue, keyValue, and versionValue.
Examples:
• When accessing a fieldName defined as inputVolume in the SEC, then inputvolume, INPUTVOLUME or
inputVolume are valid field names. Field names do not have to be specified in a request as they are
defined in the SEC
• When a fieldValue is used to find a field (such as when using the <deleteField> command), the field
value is case-sensitive. If a multi-value field contained the values DayPass,Weekend,Evening and the
<deleteField> command was used to delete the value WEEKEND, then this fails
• When an XPath value is specified in dataXpath, such as when accessing a row in an entity (for example
in Quota), then everything contained in the dataXpath is case-sensitive, and must be specified as
defined
o For example, for Quota the following is valid:
/usage/quota[@name='Q1']
• When a keyName is specified in a <key> element (such as MSISDN), the name is not case-sensitive
• When a keyValue is specified in the <key> element (such as for an NAI), the value is case-sensitive. For
example, for a subscriber with an NAI of [email protected], then [email protected] or [email protected]
does not find the subscriber
• When a versionName is specified in a <version> element (such as version), the name is not case-
sensitive
• When a versionValue is specified in the <version> element (such as v1), the value is case-sensitive. For
example, for a transparent entity with a single version defined of v1, then V1 does not match the version
defined
If the comment is contained with the XML blob for an opaque entity, in the CDATA constraint, then the
comment is stored in the XML blob.
If the comment is contained with the XML blob for a transparent entity, in the CDATA constraint, then the
comment is stored in the XML blob.
or until manually removed via either the Main Menu of the UDR GUI and selecting Status & Manage Files
screen, or UDR Maintenance Import Status.
The import log file contains:
• Date and time the import operation started and completed including percentage of the import file
(lines) complete
• All requests that resulted in failure along with associated error code (value and string representation),
and line of the import file containing the failure.
• Total number of requests successfully committed and failed.
Table 6: Import Log File Format
mm/dd/yy hh:mm:ss Started (0 of linesToImport) 0% complete
reqMsg
[error errorValue errorString : line lineOfFailure] [description]
. . .
reqMsg
[error errorValue errorString : line lineOfFailure] [description]
Parameter Description
mm/dd/yy Date the entry was logged.
Values:
• mm is 01 to 12 (month)
• dd is 01 to 31 (day of month)
• yy is 00 to 99 (last two digits of the year)
linesImported Number of lines of the import file that has been processed
Parameter Description
successfulCmds Total number of Request Messages successfully committed
Figure 2 and Figure 3 are examples of import log files for successfully completed and interrupted import files:
Figure 2: Import Log File—Import Successfully Completed Example
02/06/13 13:28:01 Started (0 of 200) 0% complete
<removeSubscriber><imsi>310910421000102</imsi></removeSubscriber>
[error 6 Invalid XML: 100 Line:1, Column:19 error: no declaration found for element 'removeSu
bscriber' : line 1]
<updateSubscriber><key><MSISDN>33123654862</MSISDN></key><subscriber><AccountId>10404723525</Accoun
tId><MSISDN>33123654862</MSISDN><IMSI>184569547984229</IMSI><IMEI>44441111111111</IMEI></subscriber
><entity><data>
<name>Subscriber</name><interface>XMLIMPORT</interface></data><content><![CDATA[<subscriber><field
name="AccountId">10404723525</field><field name="MSISDN">33123654862</field><field name
="IMSI">184569547984229</field><field name="IMEI">44441111111111</field><field
name="BillingDay">1</field><field name="Tier"></field><
field name="Entitlement">DayPass</field></subscriber>]]></content></entity></updateSubscriber
>
[error 39 Key not found: [MSISDN:33123654862] : line 1]
<deleteSubscriber><key><MSISDN>33123654862</MSISDN></key></deleteSubscriber>
[error 39 Key not found: [MSISDN:33123654862] : line 1]
In the event the import operation is interrupted/terminated (abnormally terminated), the number and
percentage of requests attempted is reported.
Figure 3: Import Log File—Import Interrupted Example
02/06/13 13:28:01 Started (0 of 200) 0% complete
File successfully downloaded to Import the file into the Provisioning Transfer
NOAMP server Database Completed
Transferring
File downloading failed in
Transfer Failed
between (any reason)
3.3 Export
UDR export generates XML output to align with the output produced by the Oracle Communications Subscriber
Data Management v9.3. The export feature allows a text export of the database based on a range (MSISDN,
IMSI, or IMEIrange). You can schedule repeat exports. Exported data may also be offloaded to a remote server.
The exported text file is also available to be downloaded from the file transfer area. You may use exported
records to do data manipulation of subscriber data or as an import file. The export process is non-blocking, it
runs together with Provisioning updates as well as network (Sh) updates.
3.3.1 XMLExport
To start the process, select a range of MSISDN, IMSI or IMEI and scheduled an export via the GUI.
The XMLExport process performs the following:
• Export process creates an output file
• Export process looks up subscribers sequentially, including Auto-Enrolled subscribers, and output lines
as follows:
o Produce <subscriberRecord> line with all subscriber SDO entries
o If a subscriber is part of a pool, <subscriberRecord> line includes <poolId> tag
o If a subscriber is part of pool, <poolRecord> line is produced with all pool SDO entries.
o Auto-Enrolled subscribers are exported with the autoEnrolled="true" attribute
• XML Declaration <?xml version="1.0" encoding="UTF-8"?> is stripped out of the retrieved data for
each register.
• Entity/Service Indication name, Sequence Number and Last Update Time are not exported for each
entity per subscriber.
A maximum of 30 million subscribers can be exported from the range specified. Figure 5 displays export in more
detail.
Figure 5: Generating Output File
<poolId>poolId</poolId>
<subscriber>
<field name="profileFieldName1">profileFieldValue1</field>
:
<field name="profileFieldNameN">profileFieldValueN</field>
</subscriber>
<entityName>
entityData
</entityName>
</subscriberRecord>
<poolRecord>
<pool>
<field name="poolProfileFieldName1">poolProfileFieldValue1</field>
:
<field name="poolProfileFieldNameN">poolProfileFieldValueN</field>
</pool>
<poolEntityName>
poolEntityData
</poolEntityName>
</poolRecord>
NOTE: Each <subscriberRecord> or <poolRecord> is formatted on a single line only. It is expanded for
readability.
Subscriber Record
One <subscriberRecord> is present for every subscriber that is exported, and all data for that subscriber is
contained in it.
If the subscriber was auto enrolled, then the autoEnrolled attribute is set to true. If the subscriber was not auto
enrolled, then the autoEnrolled attribute is omitted.
If the subscriber is a member of a pool, then a <poolId> element is present, and the PoolID of the pool to which
the subscriber is a member is set in poolId. If the subscriber is a member of a pool, then the corresponding
<poolRecord> for the pool for which the subscriber is a member is also contained in the export file.
A subscriber profile is stored in the <subscriber> element. This contains all <field> elements defined in the
subscriber profile XML blob. Each defined profile field is set in profileFieldNameX/profileFieldValueX.
An element exists for each entity defined for the subscriber, such as Quota, State, or DynamicQuota. All XML
blob data for that entity is contained in in. For example, the element <usage> is present for the Quota entity,
the element <state> for the State entity, and <definition> for the DynamicQuota entity. The XML blob
contents in the root element are in entityData.
Pool Record
One <poolRecord> is present for every pool that is exported, and all data for that pool is contained in it.
A pool profile is stored in the <pool> element. This contains all <field> elements defined in the PoolProfile XML
blob for the pool. Each defined PoolProfile field is set in poolProfileFieldNameX/poolProfileFieldValueX.
An element exists for each entity defined for the pool, such as PoolQuota, PoolState, or PoolDynamicQuota. For
each entity, the entityName contains the root element name of the XML blob. All XML blob data for that entity is
contained in in. For example, the element <usage> is present for the PoolQuota entity, the element <state> for
the PoolState entity, and <definition> for the PoolDynamicQuota entity. The XML blob contents in the root
element are in poolEntityData.
If the PSO feature is enabled and the poolId falls in a range that is maintained by a different UDR instance, then
any data exported for the pool only includes the pool profile as provisioned/maintained on the non pool host
UDR. No other pooled entities are exported.
Examples
Sample File Formats (lines are expanded to improve readability):
Pool Record
<poolRecord>
<pool>
:
</pool>
<usage>
:
</usage>
</poolRecord>
Auto-Enrolled Subscriber
<subscriberRecord autoEnrolled="true">
<subscriber>
<field name="MSISDN">6542896515</field>
<field name="BillingDay">1</field>
<field name="Tier"/>
<field name="Entitlement">DayPass</field>
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
</subscriber>
<state>
<version>3</version>
<property>
<name>mcc</name>
<value>315</value>
</property>
<property>
<name>expire</name>
<value>2010-02-09T11:20:32</value>
</property>
<property>
<name>approved</name>
<value>yes</value>
</property>
</state>
</subscriberRecord>
Tool Usage
xmlconverter <exportFileName> <importFileName> <create|update> <range>
• exportFileName: The file name with the absolute path which is used as input
• importFileName: The file name with the absolute path which is created as output.
• Create: The generated import file is expected to be used on an UDR system which does not contain the
exported subscribers as it generates create commands.
• Update: The generated import file is expected to be used on an UDR system which contains the
exported subscribers as it generates update commands.
• Range: This generated output file will have informations which will enable it to create subscribers with
(Msisdn/Imsi ranges). This option is optional i.e If the subscriber does not have any ranges the user shall
not provide this option.
For example:
/usr/TKLC/udr/bin/xmlconverter /var/tmp/ExportFile.exml /var/tmp/ImportFile.ixml create
<range>
NOTES
• For Auto-Enrolled Subscribers, internal XML commands are not generated for the profile entity. In this
case, the updated internal XML commands are generated for non-profile entities only.
• For an Enterprise Pool, a single <transaction> are generated containing <addPoolMember> for each of
its members. The generated file must be modifyed as described in Section 2.5.1
• Only subscribers with range(Msisdn/Imsi range) should use the “range” option. The .exml file generated
in this case must have used MSisdnRange/ImsiRange ranges.
Display
Figure 6: Export Schedule (Display)
Insert
Exports are scheduled using the Main Menu: UDR Maintenance Export Schedule [insert] GUI
screen. On this screen, you can add a scheduled export. You can schedule an export from GUI by specifying a
range of MSISDNs, IMSIs, IMEIs, MSISDN_RANGEs or IMSI_RANGEs as shown in Figure 7. A maximum of 30
million subscribers are exported from the range specified. If a range larger than 30 million subscribers is
specified, the export stops after it reaches 30 million subscribers. Exporting pools by specifying a range of
PoolIDs is not supported.
Edit
You can modify a scheduled export from GUI by specifying range of MSISDNs, IMSIs, IMEIs, MSISDN_RANGEs or
IMSI_RANGEs as shown in Figure 8. A maximum of 30 million subscribers are exported from the range specified.
Exporting pools by specifying a range of PoolIDs is not supported.
Figure 8: Export Schedule (Edit)
Delete
Figure 9: Export Schedule (Delete)
Export Status
You can view the status of all in progress and completed requested exports by using the Main Menu for the UDR
GUI and selecting Menu: UDR Maintenance Export Status screen. This screen displays the export file
name, status of the export, number of export commands that succeeded and failed, comment and time stamps
for when the export was queued, started and completed. The Export Status screen also provides hyperlinks so
that you can view the exported file as text or save the file locally.
Figure 10: Export Status
• Pool Subscription
o A pool subscription exists for every pool
o Maps a pool subscription to the pool identity through which it can be accessed
o Maps a pool subscription to the individual subscriptions of the subscribers that are members of the
pool
• User Identities
Use to map a specific user identity to a subscription
o IMSI, MSISDN IMEI, NAI and AccountId map to an individual subscription
o PoolID maps to a pool
• Pool Membership
Maps a pool to the list of the individual subscriber members
The Subscription Data Object (SDO):
• An SDO record contains a list of registers, holding a different type of entity data in each register
• An SDO record exists for:
o Each individual subscriber
Defined entities stored in the registers are:
Profile
Quota
State
Dynamic Quota
o Each pool
Defined entities stored in the registers are:
Pool Profile
Pool Quota
Pool State
Pool Dynamic Quota
Provisioning applications can create, retrieve, modify, and delete subscriber/pool data. The indexing system
allows access to the Subscriber SDO via IMSI, MSISDN, IMEI, NAI or AccountId. The pool SDO can be accessed via
PoolID.
A field in an entity can be defined as mandatory, or optional. A mandatory field must exist, and cannot be
deleted.
A field in an entity can have a default value. If an entity is created, and the field is not specified, it is created with
the default value.
A field in an entity can be defined so that afterit is created, it cannot be modified. Any attempt to update the
field after it is created fails.
A field in an entity can have a reset value. If a reset command is used on the entity, those fields with a defined
reset value is set to the defined value. This is only applicable to field values in a row for the Quota and
PoolQuota entities.
This section describes the default UDR data model as defined in the Subscriber Entity Configuration (SEC). The
data model can be customized via the UDR GUI.
Index
IMEI
Pool
Individual Pool
IMEI String List of IMEIs (8 to 14 numeric digits). A separate entry is included for each IMEI
associated with the subscriber profile.
IMSI String List of IMSIs (10 to 15 numeric digits). A separate entry is included for each IMSI
associated with the subscriber profile.
AccountId String Any string that can be used to identify the account for the subscriber (1 to 255
characters).
Allowed values are any ASCII printable character, values x20 to x7e.
Entitlement String List of entitlements. A separate entry is included for each entitlement associated with the
subscriber profile.
4.1.2 Quota
The Quota entity is used by the PCRF to record the current resource usage associated with a subscriber. A quota
entity may contain multiple quota elements, each one tracking a different resource.
The Quota entity is associated with a subscriber record and supports the following sequence of attributes.
NOTES
• The Quota entity contains a version number. Different attributes maybe be present based on the version
number value of the entity being accessed. In UDR, only v3 of Quota is supported.
• The default value given in the table is used either:
• When a Quota instance is created, and a value is not supplied for the field. In this case, the field is
created with the value indicated
• When a Quota instance is reset using the Reset command. If a field is defined as resettable, and the field
exists, then it is set to the value indicated. If the field does not exist in the Quota, it is not created.
NOTE: If a resettable field does not exist, and the field is also defined as defaultable, then the field is get
created with the value indicated.
Quota
Name (XML tag) Type Default Value Description
Versions
usage Sequence (multiplicity is 1) 1/2/3
time String Empty string “” This element tracks the time-based resource 1/2/3
consumption for a Quota.
totalVolume String “0” This element tracks the bandwidth volume-based 1/2/3
resource consumption for a Quota.
inputVolume String “0” This element tracks the upstream bandwidth 1/2/3
volume-based resource consumption for a
Quota.
outputVolume String “0” This element tracks the downstream bandwidth 1/2/3
volume-based resource consumption for a
Quota.
serviceSpecific String Empty string “” This element tracks service-specific resource 1/2/3
consumption for a Quota.
nextResetTime String Empty string “” When set, it indicates the time after which the 1/2/3
usage counters need to be reset.
See section 4.3 for format details.
grantedTotalVolume String “0” Granted Total Volume represents the granted 2/3
total volume of all the subscribers in the pool for
pool quota. For individual quota, it represents
the granted volume to all the PDN connections
for that subscriber.
4.1.3 State
The State entity is written by the PCRF to store the state of various properties managed as a part of the
subscriber policy. Each subscriber may have a state entity. Each state entity may contain multiple properties.
The State entity contains a version number. Different attributes maybe be present based on the version number
value of the entity being accessed. In UDR, there is only one version number of 1.
The default fields configured are not:
• Resettable
• Defaultable
The State entity supports the following sequence of attributes:
Table 11: State Entity Definition
name String The class identifier for a pass or top-up. This name is used to match top-ups
to quota definitions on the PCRF. This name is used in policy conditions and
actions on the PCRF.
InstanceId String A unique identifier to identify this instance of a dynamic quota object.
Priority String An integer represented as a string. This number allows service providers to
InitialTime String An integer represented as a string. The number of seconds initially granted
for the pass/top-up.
InitialTotalVolume String An integer represented as a string. The number of bytes of total volume
initially granted for the pass/top-up.
InitialInputVolume String An integer represented as a string. The number of bytes of input volume
initially granted for the pass/top-up.
InitialOutputVolume String An integer represented as a string. The number of bytes of output volume
initially granted for the pass/top-up.
InitialServiceSpecific String An integer represented as a string. The number of service specific units
initially granted for the pass/top-up.
activationdatetime String The date/time after which the pass or top-up may be active.
See section 4.3 for format details.
expirationdatetime String The date/time after which the pass or top-up is considered to be exhausted
See section 4.3 for format details.
Duration String The number of seconds after first use in which the pass must be used or
expired. If both Duration and expirationdatetime are present, the closest
expiration time is used.
InterimReportingInterval String The number of seconds after which the GGSN/DPI/Gateway revalidates
quota grants with the PCRF.
BillingDay Uint8 The day of the month (1 to 31)] when the associated quota for the pool is reset.
Entitlement String List of entitlements. A separate entry is included for each entitlement associated with the
pool profile.
• MM is month
• DD is day
• T is Date/Time separator
• hh is hour
• mm is minutes
• ss is seconds
• Z is UTC (Coordinated Universal Time)
• +|- is time offset from UTC
The following are valid examples of a field in Date/Timestamp format:
• 2015-06-04T15:43:00 (local time)
• 2015-06-04T15:43:00Z (UTC time)
• 2015-06-04T15:43:00+02:00 (positive offset from UTC)
• 2015-06-04T15:43:00-05:00 (negative offset from UTC)
Prerequisites
A subscriber with any of the keys supplied in the <key> section must not exist.
Request
<createSubscriber>
<key>
[
<IMSI>IMSI1</IMSI>
[ <IMSI>IMSI2</IMSI> ]
[ <IMSI>IMSI3</IMSI> ]
]
[
<MSISDN>MSISDN1</MSISDN>
[ <MSISDN>MSISDN2</MSISDN> ]
[ <MSISDN>MSISDN3</MSISDN> ]
]
[
<NAI>NAI1</NAI>
[ <NAI>NAI2</NAI> ]
[ <NAI>NAI3</NAI> ]
]
[ <AccountId>accountId</AccountId> ]
</key>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
<type>dataType</type>
</data>
<content>
<![CDATA[cdataProfile]]>
</content>
</entity>
</createSubscriber>
Where:
• IMSIX: IMSI values corresponding to the subscriber. There are not any values if an IMSI is not
provisioned for the subscriber
Values: A string with 10 to 15 digits (if value is set)
• IMEIX: IMEI values corresponding to the subscriber. There are not any values if an IMEI is not
provisioned for the subscriber
Values: A string with 8 to 14 digits (if value is set)
• MSISDNX: MSISDN values corresponding to the subscriber. There are not any values if an MSISDN is not
provisioned for the subscriber
Values: A string with 8 to 15 digits (if value is set)
• NAIX: NAI values corresponding to the subscriber. There are not any values if an NAI is not provisioned
for the subscriber
Refer to Table 9 for supported NAI formats and length
• accountId: AccountId corresponding to the subscriber. This value is not present if an AccountId is not
provisioned for the subscriber
Values: A string with 1 to 255 characters (if value is set)
• dataName: A user defined entity type/name for the subscriber profile
Value is Subscriber
• dataInterface: The interface type used to identify the bulk import/export interface
Value is XMLIMPORT
• dataType: Optional field specifies the type of subscriber wheather a subscriber is of range type or not.
Value is range
• cdataProfile: Contents of the XML data blob for the subscriber profile
NOTES
• In <key> at least one key type is mandatory. Any combination of key types are allowed. Up to 3
occurrences of each repeatable key type (IMSI, MSISDN, IMEI, or NAI) is supported.
• Key order in the request is not important.
• The dataType must be set to “range” for subscriber with MSISDN/IMSI ranges.
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
Field Value Not Valid. The value for a given field is not valid based on the definition
FieldValueNotValid
in the SEC
Occurrence Constraint Violation. There are too many instances of a given field.
OccurenceConstraintViolation
Likely more than one instance of a non-repeatable field
Field Not Defined. The given field is not a valid field in the entity as defined in the
FieldDefinitionNotFound
SEC
KeyAlreadyExists Key Already Exists. A subscriber exists with the given key
Examples
Request 1
A subscriber is created, with an AccountId, MSISDN and IMSI keys. The BillingDay , Tier, and Entitlement fields
are set.
<createSubscriber>
<key>
<AccountId>10404723525</AccountId>
<MSISDN>33123654862</MSISDN>
<IMSI>184569547984229</IMSI>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="AccountId">10404723525</field>
<field name="MSISDN">33123654862</field>
<field name="IMSI">184569547984229</field>
<field name="BillingDay">1</field>
<field name="Tier"></field>
<field name="Entitlement">DayPass</field>
<field name="Entitlement">DayPassPlus</field>
</subscriber>
]]>
</content>
</entity>
</createSubscriber>
Response 1
The request is successful, and the subscriber was created.
Request 2
A subscriber is created, with an AccountId, MSISDN and IMSI keys. Another subscriber exists with the given IMSI.
<createSubscriber>
<key>
<AccountId>10404723525</AccountId>
<MSISDN>33123654862</MSISDN>
<IMSI>184569547984229</IMSI>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="AccountId">10404723525</field>
<field name="MSISDN">33123654862</field>
<field name="IMSI">184569547984229</field>
<field name="BillingDay">1</field>
<field name="Tier"></field>
<field name="Entitlement">DayPass</field>
<field name="Entitlement">DayPassPlus</field>
</subscriber>
]]>
</content>
</entity>
</createSubscriber>
Response 2
The request fails. The errorValue indicates a subscriber exists with the given IMSI.
[error 40 errorText : line lineNumber]
Request 3
A subscriber is created, with an AccountId, MSISDN and IMSI keys. The BillingDay, Tier, and Entitlement fields
are set. Provisioning has been disabled.
<createSubscriber>
<key>
<MSISDN>33123654862</MSISDN>
<IMSI>184569547984229</IMSI>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="MSISDN">33123654862</field>
<field name="IMSI">184569547984229</field>
<field name="BillingDay">1</field>
<field name="Tier"></field>
<field name="Entitlement">DayPass</field>
</subscriber>
]]>
</content>
</entity>
</createSubscriber>
Response 3
The request is not processed.
Request 4
A subscriber is created, with one IMEI and one IMSI key. The WL field is set and BL, GL, and SV fields are zero.
This is an example for UDR for DSR based EIR solution with IMEI as key
<createSubscriber>
<key>
<IMEI>98765439876547</IMEI>
<IMSI>987654398765470</IMSI>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="IMEI">98765439876547</field>
<field name="IMSI">987654398765470</field>
<field name="WL">1</field>
<field name="BL">0</field>
<field name="GL">0</field>
<field name="SV">00</field>
</subscriber>
]]>
</content>
</entity>
</createSubscriber>
Response 4
The request is successful, and the subscriber was created.
Request 5
A subscriber is created, with two IMEIs(IMEI range) as key. The WL field is set and BL, GL fields are zero.
This is an example for UDR for DSR based EIR solution with IMEI range as key
<createSubscriber>
<key>
<IMEI>11111111111111</IMEI>
<IMEI>11111111112222</IMEI>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="IMEI">11111111111111</field>
<field name="IMEI">11111111112222</field>
<field name="WL">1</field>
<field name="BL">0</field>
<field name="GL">0</field>
</subscriber>
]]>
</content>
</entity>
</createSubscriber>
Response 5
The request is successful, and the subscriber was created.
Request 6
A MNP subscriber is created, with MSISDN as key.
This is an example for UDR for DSR based vMNP solution with MSISDN as key
<transaction>
<txRequest id="1">
<createSubscriber>
<key>
<MSISDN>5555555555</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content><![CDATA[
<subscriber>
<field name="MSISDN">5555555555</field>
<field name="MSISDN">5555556666</field>
<field name="CLDBL">1</field>
<field name="CLNBL">1</field>
<field name="PType">1</field>
<field name="ASD">abcd</field>
</subscriber>]]>
</content>
</entity>
</createSubscriber>
</txRequest>
<txRequest id="2">
<updateFieldSet create="true" createEntityIfNotExist="false" inTx="false">
<key>
<MSISDN>5555555555</MSISDN>
</key>
<entity>
<data>
<name>MnpSPRN</name>
<interface>XMLIMPORT</interface>
<xpath />
</data>
<content><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<MnpSPRN>
<Type>RN</Type>
<EDigit>685477777</EDigit>
<RI>0</RI>
<PC>111-222-444</PC>
<PCDom>ansi</PCDom>
<SSN>3</SSN>
<SRFIMSI>111111111</SRFIMSI>
<DigAct>INSERTENTITYID</DigAct>
</MnpSPRN>]]></content>
</entity>
</updateFieldSet>
</txRequest>
<txRequest id="3">
<updateFieldSet create="true" createEntityIfNotExist="false" inTx="false">
<key>
<MSISDN>5555555555</MSISDN>
</key>
<entity>
<data>
<name>MnpGRN</name>
<interface>XMLIMPORT</interface>
<xpath />
</data>
<content><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<MnpGRN>
<EDigit>100</EDigit>
<RI>1</RI>
<PC>111-222-333</PC>
<PCDom>ansi</PCDom>
<SSN>3</SSN>
<SRFIMSI>222222222</SRFIMSI>
<DigAct>INSERTENTITYID</DigAct>
</MnpGRN>]]></content>
</entity>
</updateFieldSet>
</txRequest>
</transaction>
Response 6
The request is successful, and the subscriber was created.
Request 7
A subscriber is created, with two MSISDNs(MSISDN range) as key.
This is an example for UDR for DSR based vMNP solution with MSISDN range as key
<transaction>
<txRequest id="1">
<createSubscriber>
<key>
<MSISDN>5555555555</MSISDN>
<MSISDN>5555556666</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<type>range</type>
</data>
<content><![CDATA[
<subscriber>
<field name="MSISDN">5555555555</field>
<field name="MSISDN">5555556666</field>
<field name="CLDBL">1</field>
<field name="CLNBL">1</field>
<field name="PType">1</field>
<field name="ASD">abcd</field>
</subscriber>]]>
</content>
</entity>
</createSubscriber>
</txRequest>
<txRequest id="2">
<updateFieldSet create="true" createEntityIfNotExist="false" inTx="false">
<key>
<MSISDN>5555555555</MSISDN>
<MSISDN>5555556666</MSISDN>
</key>
<entity>
<data>
<name>MnpSPRN</name>
<interface>XMLIMPORT</interface>
<type>range</type>
<xpath />
</data>
<content><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<MnpSPRN>
<Type>RN</Type>
<EDigit>685477777</EDigit>
<RI>0</RI>
<PC>111-222-444</PC>
<PCDom>ansi</PCDom>
<SSN>3</SSN>
<SRFIMSI>111111111</SRFIMSI>
<DigAct>INSERTENTITYID</DigAct>
</MnpSPRN>]]></content>
</entity>
</updateFieldSet>
</txRequest>
<txRequest id="3">
Response 7
The request is successful, and the subscriber was created.
Prerequisites
• A subscriber with a keys of the keyNameX/keyValueX supplied must exist.
• All supplied keys must reference the same subscriber.
Request
<updateSubscriber>
<key>
<keyName1>keyValue1</keyName1>
[
<keyName2>keyValue2</keyName2>
:
<keyNameN>keyValueN</keyNameN>
]
</key>
<subscriber>
[
<IMSI>IMSI1</IMSI>
[ <IMSI>IMSI2</IMSI> ]
[ <IMSI>IMSI3</IMSI> ]
]
[
<MSISDN>MSISDN1</MSISDN>
[ <MSISDN>MSISDN2</MSISDN> ]
[ <MSISDN>MSISDN3</MSISDN> ]
]
[
<NAI>NAI1</NAI>
[ <NAI>NAI2</NAI> ]
[ <NAI>NAI3</NAI> ]
]
[ <AccountId>accountId</AccountId> ]
</subscriber>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
</data>
<content>
<![CDATA[cdataProfile]]>
</content>
</entity>
</updateSubscriber>
Where:
• keyNameX: A key field in the subscriber profile
Value is either IMSI, MSISDN, IMEI, NAI, or AccountId
• keyValueX: Corresponding key field value assigned to keyName
• IMSIX: IMSI values corresponding to the subscriber. There are not any values if an IMSI is not
provisioned for the subscriber
Values: A string with 10 to 15 digits (if value is set)
• IMEIX: IMEI values corresponding to the subscriber. There are not any values if an IMEI is not
provisioned for the subscriber
Values: A string with 8 to 14 digits (if value is set)
• MSISDNX: MSISDN values corresponding to the subscriber. There are not any values if an MSISDN is not
provisioned for the subscriber
Values: A string with 8 to 15 digits (if value is set)
• NAIX: NAI values corresponding to the subscriber. There are not any values if an NAI is not provisioned
for the subscriber
Refer to Table 9 for supported NAI formats and length
• accountId: AccountId corresponding to the subscriber. This value is not present if an AccountId is not
provisioned for the subscriber
Values: A string with 1 to 255 characters (if value is set)
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
Field Value Not Valid. The value for a given field is not valid based on the
FieldValueNotValid
definition in the SEC
Field Not Defined. The given field is not a valid field in the entity as
FieldDefinitionNotFound
defined in the SEC
KeyNotFound Key Not Found. A subscriber with the given key cannot be found
KeyAlreadyExists Key Already Exists. A subscriber exists with the given key
Examples
Request 1
A subscriber is updated using MSISDN. The AccountId, IMSI, BillingDay, Tier, and Entitlement fields are set. The
subscriber exists.
<updateSubscriber>
<key>
<MSISDN>33123654862</MSISDN>
</key>
<subscriber>
<AccountId>10404723525</AccountId>
<MSISDN>33123654862</MSISDN>
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
<IMSI>184569547984229</IMSI>
</subscriber>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="AccountId">10404723525</field>
<field name="MSISDN">33123654862</field>
<field name="IMSI">184569547984229</field>
<field name="BillingDay">6</field>
<field name="Tier">Silver</field>
<field name="Entitlement">DayPass</field>
</subscriber>
]]>
</content>
</entity>
</updateSubscriber>
Response 1
The request is successful, and the subscriber was updated.
Request 2
A subscriber is updated using IMSI. The AccountId, IMSI, BillingDay, Tier, and Entitlement fields are set. The
subscriber does not exist.
<updateSubscriber>
<key>
<IMSI>302370123456789</IMSI>
</key>
<subscriber>
<IMSI>302370123456789</IMSI>
</subscriber>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="IMSI">302370123456789</field>
<field name="BillingDay">4</field>
<field name="Tier">Gold</field>
<field name="Entitlement">DayPass</field>
</subscriber>
]]>
</content>
</entity>
</updateSubscriber>
Response 2
The request fails. The errorValue indicates a subscriber with the given IMSI does not exist.
[error 39 errorText : line lineNumber]
Request 3
A subscriber is updated using IMEI. The WL is set to 0 and BL field is set to 1 are set. The subscriber exists.
This is an example for UDR for DSR based EIR solution with IMEI as key.
<updateSubscriber>
<key>
<IMEI>98765439876547</IMEI>
</key>
<subscriber>
<IMEI>98765439876547</IMEI>
<IMSI>987654398765470</IMSI>
</subscriber>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="IMEI">98765439876547</field>
<field name="IMSI">987654398765470</field>
<field name="WL">0</field>
<field name="BL">1</field>
<field name="GL">0</field>
<field name="SV">00</field>
</subscriber>
]]>
</content>
</entity>
</updateSubscriber>
Response 3
The request is successful, and the subscriber was updated.
Request 4
A subscriber is updated using IMEI range. The WL is set to 0 and BL field is set to 1 are set. The subscriber exists.
This is an example for UDR for DSR based EIR solution with IMEI range as key.
<updateSubscriber>
<key>
<IMEI>11111111111111</IMEI>
<IMEI>11111111112222</IMEI>
</key>
<subscriber>
<IMEI>11111111111111</IMEI>
<IMEI>11111111112222</IMEI>
</subscriber>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<subscriber>
<field name="IMEI">11111111111111</field>
<field name="IMEI">11111111112222</field>
<field name="WL">0</field>
<field name="BL">1</field>
<field name="GL">0</field>
</subscriber>
]]>
</content>
</entity>
</updateSubscriber>
Response 4
The request is successful, and the subscriber was updated.
Request 4
An MNP subscriber is updated using IMEI range. The CLNBL is set to 0 and CLDBL field is set to 0 are set. The
subscriber exists.
This is an example of UDR based DSR for vMNP solution.
<transaction>
<txRequest id="1">
<updateSubscriber>
<key>
<MSISDN>5555555555</MSISDN>
<MSISDN>5555556666</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<type>range</type>
</data>
<content><![CDATA[
<subscriber>
<field name="MSISDN">5555555555</field>
<field name="MSISDN">5555556666</field>
<field name="CLDBL">0</field>
<field name="CLNBL">0</field>
<field name="PType">1</field>
<field name="ASD">abcd</field>
</subscriber>]]>
</content>
</entity>
</updateSubscriber>
</txRequest>
<txRequest id="1">
<updateFieldSet create="true" createEntityIfNotExist="false" inTx="false">
<key>
<MSISDN>5555555555</MSISDN>
<MSISDN>5555556666</MSISDN>
</key>
<entity>
<data>
<name>MnpSPRN</name>
<interface>XMLIMPORT</interface>
<type>range</type>
<xpath />
</data>
<content><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<MnpSPRN>
<Type>RN</Type>
<EDigit>685477777</EDigit>
<RI>0</RI>
<PC>111-222-444</PC>
<PCDom>ansi</PCDom>
<SSN>3</SSN>
<SRFIMSI>111111111</SRFIMSI>
<DigAct>INSERTENTITYID</DigAct>
</MnpSPRN>]]></content>
</entity>
</updateFieldSet>
</txRequest>
</transaction>
Response 4
The request is successful, and the subscriber was updated.
Prerequisites
• A subscriber with a keys of the keyNameX/keyValueX supplied must exist.
• All supplied keys must reference the same subscriber.
• The subscriber must not be a member of a pool, or the request fails.
Request
<deleteSubscriber>
<key>
<keyName1>keyValue1</keyName1>
[
<keyName2>keyValue2</keyName2>
:
<keyNameN>keyValueN</keyNameN>
]
</key>
</deleteSubscriber>
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of
errorValue in the failure response are indicated in the Error Codes section below.
Error Codes
Examples
Request 1
The subscriber with the given MSISDN is deleted. The subscriber exists.
95606000001Response 1
Request 2
The subscriber with the given MSISDN is deleted. The subscriber does not exist.
<deleteSubscriber>
<key>
<MSISDN>33123655555</MSISDN>
</key>
</deleteSubscriber>
Response 2
The request fails. The errorValue indicates a subscriber with the given MSISDN does not exist.
[error 39 errorText : line lineNumber]
Request 3
The subscriber with the given IMEI is deleted. The subscriber exists.
This is an example for UDR for DSR based EIR solution with IMEI as key.
<deleteSubscriber>
<key>
<IMEI>98765439876547</IMEI>
</key>
</deleteSubscriber>
Response 3
The request is successful, and the subscriber was deleted.
Request 4
The subscriber with the given IMEI is deleted. The subscriber exists.
This is an example for UDR for DSR based EIR solution with IMEI range as key.
<deleteSubscriber>
<key>
<IMEI>11111111111111</IMEI>
<IMEI>11111111112222</IMEI>
</key>
</deleteSubscriber>
Response 4
The request is successful, and the subscriber was deleted.
Request 5
The subscriber with the given MsisdnRange is deleted. The subscriber exists.
This is an example for UDR for DSR based vMNP solution with MSISDN range as key.
<deleteSubscriber>
<key>
<MSISDN>5555555555</MSISDN>
<MSISDN>5555556666</MSISDN>
</key>
<entity>
<data>
<type>range</type>
</data>
</entity>
</deleteSubscriber>
Response 5
The request is successful, and the subscriber and it’s MNP profile was deleted.
Prerequisites
A pool with a key of poolId in the <key> section must not exist.
Request
<createPool>
<key>
<PoolID>poolId</PoolID>
</key>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
</data>
<content>
<![CDATA[cdataPoolProfile]]>
</content>
</entity>
</createPool>
Where:
• poolId: PoolID value of the pool. Numeric value, 1 to 22 digits in length
Values: 1 to 9999999999999999999999
• dataName: A user defined entity type/name for the pool profile
Value is Pool
• dataInterface: The interface type used to identify the bulk import/export interface
Value is XMLIMPORT
• cdataPoolProfile: Contents of the XML data blob for the pool profile
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
FieldValueNotValid Field Value Not Valid. The value for a given field is not valid based on the definition
in the SEC
OccurenceConstraintViolation Occurrence Constraint Violation. There are too many instances of a given field.
Likely more than one instance of a non-repeatable field
FieldDefinitionNotFound Field Not Defined. The given field is not a valid field in the entity as defined in the
SEC
KeyAlreadyExists Key Already Exists. A pool exists with the given key
Examples
Request 1
A pool is created, with PoolID. The BillingDay and Entitlement fields are set.
<createPool>
<key>
<PoolID>100000</PoolID>
</key>
<entity>
<data>
<name>Pool</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<pool>
<field name="PoolID">100000</field>
<field name="BillingDay">1</field>
<field name="Entitlement">DayPass</field>
<field name="Entitlement">DayPassPlus</field>
</pool>
]]>
</content>
</entity>
</createPool>
Response 1
Request 2
A pool is created. Another pool exists with the given PoolID.
<createPool>
<key>
<PoolID>200000</PoolID>
</key>
<entity>
<data>
<name>Pool</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<pool>
<field name="PoolID">200000</field>
<field name="BillingDay">7</field>
<field name="Entitlement">DayPass</field>
</pool>
]]>
</content>
</entity>
</createPool>
Response 2
The request fails. The errorValue indicates a pool exists with the given PoolID.
[error 40 errorText : line lineNumber]
Request 3
A pool is created with Pool Quota, Pool Dynamic Quota and Pool State entities for a PoolID that is in the remote
UDR key range and the PSO feature is enabled.
<transaction>
<txRequestid="1">
<createPool>
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
<key>
<PoolID>910000001</PoolID>
</key>
<entity>
<data>
<name>Pool</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<pool>
<field name="Custom10">Custom10Value</field>
<field name="PoolId">910000001</field>
<field name="BillingDay">15</field>
<field name="Entitlement">DayPass</field>
<field name="Entitlement">DayPassPlus</field>
</pool>
]]>
</content>
</entity>
</createPool>
</txRequest><txRequest id="1">
<create createEntityIfNotExist="true">
<key>
<PoolID>910000001</PoolID>
</key>
<entity>
<data>
<name>PoolState</name>
<interface>XMLIMPORT</interface>
<xpath></xpath></data><content><![CDATA[<?xml version="1.0" encoding="UTF-8"?><state>
<version>1</version><property><name>mcc</name><value>315</value></property><property><name>expire</name>
<value>2010-02-09T11:20:32</value></property><property> <name>approved </name>
<value>yes</value></property></state>]]>
</content>
</entity>
</create>
</txRequest><txRequest id="1"><create createEntityIfNotExist="true"><key><PoolID>910000001</PoolID>
</key><entity>
<data><name>PoolQuota</name><interface>XMLIMPORT</interface><xpath></xpath></data><content><![CDATA[<?xm
l version="1.0" encoding="UTF-8"?><usage><version>3</version><quota
name="Q1"><cid>9223372036854775807</cid><time>3422</time><totalVolume>1000</totalVolume><inputVolume>980
</inputVolume><outputVolume>20</outputVolume><serviceSpecific>12</serviceSpecific><nextResetTime>2011-
04-22T00:00:00-05:00</nextResetTime><quotaState> Expired</quotaState>
<refInstanceId>184569547984765</refInstanceId></quota></usage>]]>
</content>
</entity>
</create>
</txRequest><txRequest id="1">
<create createEntityIfNotExist="true">
<key>
<PoolID>910000001</PoolID>
</key>
<entity>
<data>
<name>PoolDynamicQuota</name>
<interface>XMLIMPORT</interface>
<xpath></xpath></data><content><![CDATA[<?xml version="1.0" encoding="UTF-
8"?><definition><Version>1</Version><dynamicquota name="AggregateLimit"><Type>Roll-
Over</Type><InstanceId>15678</InstanceId><Priority>4</Priority><InitialTime>135</InitialTime><Initialtot
alVolume>2000</InitialtotalVolume><InitialinputVolume>1500</InitialinputVolume><InitialoutputVolume>500<
/InitialoutputVolume><InitialserviceSpecific>4</InitialserviceSpecific><ActivationDateTime>32</Activatio
nDateTime><ExpirationDateTime>28</ExpirationDateTime><InterimReportingInterval>100</InterimReportingInte
rval><Duration>10</Duration></dynamicquota></definition>]]>
</content>
</entity>
</create>
</txRequest>
</transaction>
Response 3
The request is successful, and the pool was created as a Non Pool Host. Since the PoolID is in the remote UDR
key range, only profile information is stored.
Request 4
A pool is created, with PoolID. PSO feature is enabled.The PoolID falls in a range that is maintained by a different
UDR instance. The BillingDay , Entitlement and Type fields are set.
<createPool>
<key>
<PoolID>100000</PoolID>
</key>
<entity>
<data>
<name>Pool</name>
<interface>XMLIMPORT</interface>
</data>
<content>
<![CDATA[
<pool>
<field name="PoolID">100000</field>
<field name="BillingDay">1</field>
<field name="Entitlement">DayPass</field>
<field name="Type">Enterprise</field>
</pool>
]]>
</content>
</entity>
</createPool>
Response 4
The request fails. The errorValue indicates this operation is not allowed on Non Pool Host UDR.
[error 50 errorText : line lineNumber]
Prerequisites
• A pool with a key of the poolId supplied must exist.
• The pool must not have subscriber members, or the request fails.
Request
<deletePool>
<key>
<PoolID>poolId</PoolID>
</key>
</deletePool>
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
PoolNotEmpty Has Pool Members. A pool cannot be deleted when it has member subscribers
Examples
Request 1
The pool with the given PoolID is deleted. The pool exists.
<deletePool>
<key>
<PoolID>100000</PoolID>
</key>
</deletePool>
Response 1
The request is successful, and the pool was deleted.
Request 2
The pool with the given PoolID is deleted. The pool does not exist.
<deletePool>
<key>
<PoolID>200000</PoolID>
</key>
</deletePool>
Response 2
The request fails. The errorValue indicates a pool with the given PoolID does not exist.
[error 39 errorText : line lineNumber]
Prerequisites
• A pool with the key of the poolId supplied must exist.
• Separate subscribers with the keys of the keyNameX/keyValueX supplied must exist.
• Each subscriber must not be a member of a pool.
• The pool must have less than the maximum number of member subscribers allowed.
Request
<addPoolMember>
<key>
<PoolID>poolId</PoolID>
</key>
<members>
<member>
<subKeyName1>subKeyValue1</subKeyName1>
</member>
[
<member>
<subKeyName2>subKeyValue2</subKeyName2>
</member>
:
<member>
<subKeyName10>subKeyValue10</subKeyName10>
</member>
]
</members>
</addPoolMember>
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
Examples
Request 1
A request is made to add a subscriber to a pool. Both the pool and the subscriber exist. The subscriber is not a
member of a pool.
<addPoolMember>
<key>
<PoolID>100000</PoolID>
</key>
<members>
<member>
<MSISDN>33123654862</MSISDN>
</member>
</members>
</addPoolMember>
Response 1
The request is successful, and the subscriber is added to the pool.
Request 2
A request is made to add a subscriber to a pool. The pool exists, but the subscriber does not.
<addPoolMember>
<key>
<PoolID>200002</PoolID>
</key>
<members>
<member>
<MSISDN>15141234567</MSISDN>
</member>
</members>
</addPoolMember>
Response 2
The request fails. The errorValue indicates that the subscriber does not exist.
[error 39 errorText : line lineNumber]
Request 3
A request is made to add a subscriber to a pool. The subscriber exists, but the pool does not.
<addPoolMember>
<key>
<PoolID>300003</PoolID>
</key>
<members>
<member>
<MSISDN>33123654862</MSISDN>
</member>
</members>
</addPoolMember>
Response 3
The request fails. The errorValue indicates that the pool does not exist.
[error 53 errorText : line lineNumber]
Request 4
A request is made to add a subscriber to a pool. Both the pool and the subscriber exist. The subscriber is a
member of a pool.
<addPoolMember>
<key>
<PoolID>200000</PoolID>
</key>
<members>
<member>
<MSISDN>33123654862</MSISDN>
</member>
</members>
</addPoolMember>
Response 4
The request fails. The errorValue indicates the subscriber is a member of a pool.
[error 43 errorText : line lineNumber]
Request 5
A request is made to add a subscriber to a pool. Both the pool and the subscriber exist. The subscriber is not a
member of a pool. The basic pool has the maximum number of members allowed.
<addPoolMember>
<key>
<PoolID>400000</PoolID>
</key>
<members>
<member>
<MSISDN>33123654862</MSISDN>
</member>
</members>
</addPoolMember>
Response 5
The request fails. The errorValue indicates the basic pool has the maximum number of members allowed.
[error 68 errorText : line lineNumber]
Request 6
A request is made to add 3 subscribers to a pool. The pool and all subscribers exist. Subscribers are not a
member of a pool.
<addPoolMember>
<key>
<PoolID>800000</PoolID>
</key>
<members>
<member>
<MSISDN>15145551234</MSISDN>
</member>
<member>
<IMSI>302370123456789</IMSI>
</member>
<member>
<MSISDN>14162221234</MSISDN>
</member>
</members>
</addPoolMember>
Response 6
The request is successful, and the 3 subscribers are added to the pool.
Prerequisites
• A pool with the key of the poolId supplied must exist.
• Separate subscribers with the keys of the keyNameX/keyValueX supplied must exist.
• Each subscriber must be a member of the specified pool.
Request
<deletePoolMember>
<key>
<PoolID>poolId</PoolID>
</key>
<members>
<member>
<subKeyName1>subKeyValue1</subKeyName1>
</member>
[
<member>
<subKeyName2>subKeyValue2</subKeyName2>
</member>
:
<member>
<subKeyName10>subKeyValue10</subKeyName10>
</member>
]
</members>
</deletePoolMember>
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
Pool does not exist. A subscriber cannot be added or removed from a pool that does
PoolNotFound
not exist
Examples
Request 1
A request is made to remove a subscriber from a pool. Both the pool and the subscriber exist. The subscriber is a
member of the pool.
<deletePoolMember>
<key>
<PoolID>100000</PoolID>
</key>
<members>
<member>
<MSISDN>33123654862</MSISDN>
</member>
</members>
</deletePoolMember>
Response 1
The request is successful, and the subscriber is removed from the pool.
Request 2
A request is made to remove a subscriber from a pool. Both the pool and the subscriber exist. The subscriber is
not a member of the pool.
<deletePoolMember>
<key>
<PoolID>200000</PoolID>
</key>
<members>
<member>
<MSISDN>33123654862</MSISDN>
</member>
</members>
</deletePoolMember>
Response 2
The request fails. The errorValue indicates the subscriber is not a member of the pool.
[error 45 errorText : line lineNumber]
Request 3
A request is made to remove 3 subscribers from a pool. The pool and all subscribers exist. All subscribers are a
member of the pool.
<deletePoolMember>
<key>
<PoolID>800000</PoolID>
</key>
<members>
<member>
<MSISDN>15145551234</MSISDN>
</member>
<member>
<IMSI>302370123456789</IMSI>
</member>
<member>
<MSISDN>14162221234</MSISDN>
</member>
</members>
</deletePoolMember>
Response 3
The request is successful, and the 3 subscribers are removed from the pool.
Prerequisites
• A subscriber/pool with the keys of the keyNameX/keyValueX values supplied must exist.
• The supplied dataName must be a valid interface entity name for a subscriber/pool.
• When creating an entity, entity of the dataName must not exist for the subscriber/pool.
• Any supplied dataXpath must reference a valid field set in the entity/row for the subscriber/pool.
• For subscriber based requests, all supplied keys must reference the same subscriber.
Request
<create createEntityIfNotExist="createEntityIfNotExist">
<key>
<keyName1>keyValue1</keyName1>
[
<keyName2>keyValue2</keyName2>
:
<keyNameN>keyValueN</keyNameN>
]
</key>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
<xpath>dataXpath</xpath>
</data>
<content> <![CDATA[
entityContent
]]></content>
</entity>
</create>
• createEntityIfNotExist: Indicates whether the entity is created if it does not exist before creating the
entity/row (for example if a Quota row is being created, and the Quota entity does not exist for the
subscriber)
Value is either true or false
• keyNameX: A key field in the subscriber profile or pool profile
Value is either IMSI, MSISDN, NAI, AccountId, or PoolID
• keyValueX: Corresponding key field value assigned to keyNameX
• dataName: A user defined entity type/name for the transparent entity being updated
Value is either Subscriber, Quota, State, DynamicQuota, Pool, PoolQuota, PoolState, or
PoolDynamicQuota
• dataInterface: The interface type used to identify the bulk import/export interface
Value is XMLIMPORT
• dataXpath: XML XPath value which corresponds to the root element in the entity for which the row
element is created, or empty when creating an entire entity
o Value is "/usage" for a Quota or PoolQuota row
o Value is "/definition" for a DynamicQuota or PoolDynamicQuota row
o Value is "/state" for a State or PoolState row
• entityContent: Content of entity/row being created
NOTE: For subscriber based requests, multiple subscriber key values can be supplied. See section 2.7 for details.
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
Field Value Not Valid. The value for a given field is not valid based on the definition
FieldValueNotValid
in the SEC
Occurrence Constraint Violation. There are too many instances of a given field.
OccurenceConstraintViolation
Likely more than one instance of a non-repeatable field
Field Not Defined. The given field is not a valid field in the entity as defined in the
FieldDefinitionNotFound
SEC
KeyNotFound Key Not Found. A subscriber/pool with the given key cannot be found
Examples
Request 1
A request is made to create the Quota opaque data. The Quota XML blob is supplied whole.
<create createEntityIfNotExist="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath/>
</data>
<content>
<![CDATA[
<usage>
<version>3</version>
<quota name="AggregateLimit">
<cid>9223372036854775807</cid>
<time>3422</time>
<totalVolume>1000</totalVolume>
<inputVolume>980</inputVolume>
<outputVolume>20</outputVolume>
<serviceSpecific>12</serviceSpecific>
<nextResetTime>2011-04-22T00:00:00-05:00</nextResetTime>
<Type>pass</Type>
<RefInstanceId>184569547984765</RefInstanceId>
</quota>
</usage>
]]>
</content>
</entity>
</create>
Response 1
The request is successful, and the Quota opaque data was created.
Request 2
A request is made to create the State opaque data. The State XML blob is supplied whole. Two valid keys are
supplied for the subscriber.
<create createEntityIfNotExist="true">
<key>
<MSISDN>15141234567</MSISDN>
<IMSI>302370123456789</IMSI>
</key>
<entity>
<data>
<name>State</name>
<interface>XMLIMPORT</interface>
<xpath/>
</data>
<content>
<![CDATA[
<state>
<version>1</version>
<property>
<name>mcc</name>
<value>315</value>
</property>
<property>
<name>expire</name>
<value>2010-02-09T11:20:32</value>
</property>
<property>
<name>approved</name>
<value>yes</value>
</property>
</state>
]]>
</content>
</entity>
</create>
Response 2
The request is successful, and the State opaque data was created.
Request 3
A request is made to create a row in the Quota opaque data. The Quota opaque data exists for the subscriber.
<create createEntityIfNotExist="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage</xpath>
</data>
<content>
<![CDATA[
<quota name="NewQuota">
<cid>9223372036854775807</cid>
<time>3422</time>
<totalVolume>1000</totalVolume>
<inputVolume>980</inputVolume>
<outputVolume>20</outputVolume>
<serviceSpecific>12</serviceSpecific>
<nextResetTime>2011-04-22T00:00:00-05:00</nextResetTime>
<Type>pass</Type>
<RefInstanceId>184569547984765</RefInstanceId>
</quota>
]]>
</content>
</entity>
</create>
Response 3
The request is successful, and the Quota row data was created.
Request 4
A request is made to create a row in the Quota opaque data. The Quota opaque data does not exist for the
subscriber. The request indicates that the Quota entity is not created if it does not exist.
<create createEntityIfNotExist="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage</xpath>
</data>
<content>
<![CDATA[
<quota name="NewQuota">
<cid>9223372036854775807</cid>
<time>3422</time>
<totalVolume>1000</totalVolume>
<inputVolume>980</inputVolume>
<outputVolume>20</outputVolume>
<serviceSpecific>12</serviceSpecific>
<nextResetTime>2011-04-22T00:00:00-05:00</nextResetTime>
<Type>pass</Type>
<RefInstanceId>184569547984765</RefInstanceId>
</quota>
]]>
</content>
</entity>
</create>
Response 4
The request fails. The errorValue indicates the opaque data type does not exist.
[error 47 errorText : line lineNumber]
Request 5
A request is made to create the Location opaque data. The Location XML blob is supplied whole. Location is not
a valid opaque data type.
<create createEntityIfNotExist="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Location</name>
<interface>XMLIMPORT</interface>
<xpath/>
</data>
<content>
<![CDATA[
<location>
<town>Montreal</town>
<province>Quebec</province>
<country>Canada</country>
</location>
]]>
</content>
</entity>
</create>
Response 5
The request fails. The errorValue indicates the opaque data type is invalid.
[error 11 errorText : line lineNumber]
Request 6
A request is made to create a row in the PoolDynamicQuota opaque data. The PoolDynamicQuota opaque data
exists for the pool.
<create createEntityIfNotExist="false">
<key>
<PoolID>100000</PoolID>
</key>
<entity>
<data>
<name>PoolDynamicQuota</name>
<interface>XMLIMPORT</interface>
<xpath>/definition</xpath>
</data>
<content>
<![CDATA[
<DynamicQuota name="NewDynamicQuota">
<Type>Roll-over</Type>
<InstanceId>15678</InstanceId>
<Priority>4</Priority>
<InitialTime>135</InitialTime>
<InitialTotalVolume>2000</InitialTotalVolume>
<InitialInputVolume>1500</InitialInputVolume>
<InitialOutputVolume>500</InitialOutputVolume>
<InitialServiceSpecific>4</InitialServiceSpecific>
<activationdatetime>2015-03-09T11:20:32</activationdatetime>
<expirationdatetime>2015-04-9T11:20:32</expirationdatetime>
<InterimReportingInterval>100</InterimReportingInterval>
<Duration>10</Duration>
</DynamicQuota>
]]>
</content>
</entity>
</create>
Response 6
The request is successful, and the PoolDynamicQuota row data was created.
Request 7
A request is made to create a MnpDataSPRN data. This is an example for UDR for DSR based vMNP solution with
MSISDN range as key.
<create createEntityIfNotExist="false">
<key>
<MSISDN>95606000001</MSISDN>
<MSISDN>95606000111</MSISDN>
</key>
<entity>
<data>
<name>MnpDataSPRN</name>
<interface>XMLIMPORT</interface>
<type>range</type>
<xpath />
</data>
<content><![CDATA[<?xml version="1.0" encoding="UTF-
8"?><MnpSPRN><Type>RN</Type><EDigit>685477777</EDigit><RI>0</RI><PCDom>ansi</PCDom><SSN>3</SSN><SRFIMSI>
111111111</SRFIMSI><DigAct>INSERTENTITYID</DigAct><PC>255-2555-255</PC></MnpSPRN>]]></content>
</entity>
</create>
Response 7
The request is successful, and the MnpDataSPRN data was created.
Prerequisites
• A subscriber/pool with the keys of the keyNameX/keyValueX values supplied must exist.
• Each requested field fieldName must be a valid field in the transparent entity being updated.
• The supplied dataName must be a valid interface entity name for a subscriber/pool.
• The supplied dataXpath must reference a valid XML XPath where the specified fields in <fields> exist in
the transparent entity for the subscriber/pool.
• For subscriber based requests, all supplied keys must reference the same subscriber.
Request
<updateField clearAll="clearAll">
<key>
<keyName1>keyValue1</keyName1>
[
<keyName2>keyValue2</keyName2>
:
<keyNameN>keyValueN</keyNameN>
]
</key>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
<xpath>dataXpath</xpath>
</data>
<fields>
</entity>
</updateField>
• clearAll: Indicates whether all existing values in the fields being updated is removed before adding the
specified field values
Value is either true or false
NOTE: For fields that are not multi-value (single value), the value of clearAll must be set to true else the
request attempts to add a second instance of the field, and the request fails
• keyNameX: A key field in the subscriber profile or pool profile
Value is either IMSI, MSISDN, NAI, AccountId, or PoolID
• keyValueX: Corresponding key field value assigned to keyNameX
• dataName: A user defined entity type/name for the transparent entity being updated
Value is either Subscriber, Quota, Pool, or PoolQuota
• dataInterface: The interface type used to identify the bulk import/export interface
Value is XMLIMPORT
• dataXpath: XML XPath expression identifying the base element containing the fields to be updated
o Value is /usage/quota[@name=’quotaName’] for a Quota or PoolQuota row without an instance
specified
o Value is /usage/quota[@name=’quotaName’ and cid='quotaCid'] for a Quota or PoolQuota row
with an instance specified
o Value is /usage/quota[@name=’quotaName’ and Type='quotaType'] for a Quota or PoolQuota row
with a type specified
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
Field is not a multi-value field. Add and remove from list operations can only be
FieldNotMultiValued
performed on a multi-value field, and the field supplied is not multi-value
Field Not Defined. The given field is not a valid field in the entity as defined in the
FieldDefinitionNotFound
SEC
FieldNotUpdatable Field Cannot be Updated. The field is defined in the SEC as not be updatable
Multiple rows match the given criteria. When updating a row, only one row can exist
MultipleRowsFound
that match the given row criteria
KeyNotFound Key Not Found. A subscriber/pool with the given key cannot be found
KeyAlreadyExists Key Already Exists. A subscriber/pool exists with the given key
Examples
Request 1
A request is made to update a subscriber profile, and set the value of the BillingDay field to 23, and the Tier field
to Gold.
<updateField clearAll="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="BillingDay">23</field>
<field name="Tier">Gold</field>
</fields>
</entity>
</updateField>
Response 1
The request is successful, and the BillingDay and Tier values were updated.
Request 2
A request is made to update a subscriber profile, and set the value of the BillingDay field to 55.
<updateField clearAll="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="BillingDay">55</field>
</fields>
</entity>
</updateField>
Response 2
The request fails. The errorValue indicates the value of BillingDay was invalid.
[error 18 errorText : line lineNumber]
Request 3
A request is made to update the inputVolume and the outputVolume fields in the Q1 Quota row in the Quota
entity.
<updateField clearAll="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1']</xpath>
</data>
<fields>
<field name="inputVolume">3000</field>
<field name="outputVolume">2500</field>
</fields>
</entity>
</updateField>
Response 3
The request is successful, and the inputVolume and outputVolume values were updated.
Request 4
A request is made to update the inputVolume and the outputVolume fields in the Q1 Quota row in the Quota
entity. Two rows called Q1 exist, one with a cid of 111 and another with a cid of 222. The request is to update
the instance with the cid of 111.
<updateField clearAll="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1' and cid='111']</xpath>
</data>
<fields>
<field name="inputVolume">3000</field>
<field name="outputVolume">2500</field>
</fields>
</entity>
</updateField>
Response 4
The request is successful, and the inputVolume and outputVolume values were updated in the Q1 row
containing a cid of 111.
Request 5
A request is made to update a subscriber profile, and add the value EveningPass to the multi-value field
Entitlement retaining all existing values. The current value of the field is DayPass,Weekend.
<updateField clearAll="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="Entitlement">EveningPass</field>
</fields>
</entity>
</updateField>
Response 5
The request is successful, and the Entitlement field was updated. The value of the field is
DayPass,Weekend,EveningPass.
Request 6
A request is made to update a subscriber profile, and set the multi-value field Entitlement to be only Weekend,
removing all other existing values. The current value of the field is DayPass,Weekend,EveningPass.
<updateField clearAll="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="Entitlement">Weekend</field>
</fields>
</entity>
</updateField>
Response 6
The request is successful, and the Entitlement field was updated. The value of the field is Weekend.
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
Request 7
A request is made to update a subscriber profile, and add two additional MSISDN values. The subscriber only has
the MSISDN 15141234567.
<updateField clearAll="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="MSISDN">14161112222</field>
<field name="MSISDN">14505556666</field>
</fields>
</entity>
</updateField>
Response 7
The request is successful, and the two additional MSISDNs were added. The subscriber has three MSISDNs,
15141234567, 14161112222, and 14505556666.
Request 8
A request is made to update a subscriber profile, and replace the 3 existing IMSI values 302370123456789,
302370999888777, and 302370555555555 with a single value of 302370111111111.
<updateField clearAll="true">
<key>
<IMSI>302370123456789</IMSI>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="IMSI">302370111111111</field>
</fields>
</entity>
</updateField>
Response 8
The request is successful, and subscriber has a single IMSI, 302370111111111.
Request 9
A request is made to update a subscriber profile. The request replaces all exist IMSI values with a single value,
delete the specific MSISDN 14161112222, delete all instances of the NAI, update the BillingDay field, delete the
Tier field if the existing value is set to Gold, and delete the Custom5 field.
<updateField clearAll="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
<fields>
<field name="IMSI">302370111111111</field>
<field name="MSISDN" delete="true">14161112222</field>
<field name="NAI" delete="true"/>
<field name="BillingDay">11</field>
<field name="Tier" delete="true">Gold</field>
<field name="Custom5" delete="true"/>
</fields>
</entity>
</updateField>
Response 9
The request is successful, and subscriber has a single IMSI, 302370111111111.
Request 10
A request is made to update the InitialInputVolume and the InitialOutputVolume fields in the DQ1
DynamicQuota row in the DynamicQuota entity. Two rows called DQ1 exist, one with an InstanceId of 11111 and
another with an InstanceId of 22222. The request is to update the instance with the InstanceId of 11111.
<updateField clearAll="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>DynamicQuota</name>
<interface>XMLIMPORT</interface>
<xpath>/definition/DynamicQuota[@name='DQ1' and InstanceId='11111']</xpath>
</data>
<fields>
<field name="InitialInputVolume">3000</field>
<field name="InitialOutputVolume">2500</field>
</fields>
</entity>
</updateField>
Response 10
The request is successful, and the InitialInputVolume and InitialOutputVolume values were updated in the DQ1
row containing an InstanceId of 11111.
Request 11
A request is made to update a property value in the PoolState entity. Two properties exist, one with a property
name of mcc and another with name of approved. The request is to update the property value with the name of
mcc.
<updateField clearAll="true">
<key>
<PoolID>10000</PoolID>
</key>
<entity>
<data>
<name>PoolState</name>
<interface>XMLIMPORT</interface>
<xpath>/state/property[name='mcc']</xpath>
</data>
<fields>
<field name="value">3000</field>
</fields>
</entity>
</updateField>
Response 11
The request is successful, and the property value was updated in the PoolState containing a property name of
mcc.
Prerequisites
• A subscriber/pool with the keys of the keyNameX/keyValueX values supplied must exist.
• The supplied dataName must be a valid interface entity name for a subscriber/pool.
• Any supplied dataXpath must reference a valid field set in the entity/row for the subscriber/pool.
• Any supplied <version> versionName/versionValue must be a valid transparent entity version defined
in the SEC for the specified entity.
• For subscriber based requests, all supplied keys must reference the same subscriber.
Request
<updateFieldSet [create="create"]
[createEntityIfNotExist="createEntityIfNotExist"]>
<key>
<keyName1>keyValue1</keyName1>
[
<keyName2>keyValue2</keyName2>
:
<keyNameN>keyValueN</keyNameN>
]
</key>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
<xpath>dataXpath</xpath>
[
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
<version>
<name>versionName</name>
<value>versionValue</value>
</version>
]
</data>
<content>
entityContent
</content>
</entity>
</updateFieldSet>
• create: (Optional) Indicates whether the row is created if it does not exists
Value is either true or false
NOTE: If the entity does not exist, and the value of createEntityIfNotExist is set to true, the value of
create is ignored and the row is created in the entity
• createEntityIfNotExist: (Optional) Indicates whether the entity is created if it does not exist before
creating the entity/row (for example if a Quota row is being created, and the Quota entity does not exist
for the subscriber)
Value is either true or false
• keyNameX: A key field in the subscriber profile or pool profile
Value is either IMSI, MSISDN, NAI, AccountId, or PoolID
• keyValueX: Corresponding key field value assigned to keyNameX
• dataName: A user defined entity type/name for the transparent entity being updated
Value is either Subscriber, Quota, State, DynamicQuota, Pool, PoolQuota, PoolState, or
PoolDynamicQuota
• dataInterface: The interface type used to identify the bulk import/export interface
Value is XMLIMPORT
• dataXpath: XML XPath expression identifying the field set to be updated
NOTE: To update the entire entity (a complete opaque data replacement) the dataXpath value is empty
o Value is /usage/ for a Quota or PoolQuota row
o Value is /definition/ for a DynamicQuota or PoolDynamicQuota row
o Value is /state/ for a State or PoolState property
• versionName: (Optional) The name of the versioning element for the entity, used to specify the default
version number when creating an entity
• versionValue: (Optional) The version value for the entity, used to specify the default version number
when creating an entity
• entityContent: Content of entity/row being updated
NOTE: For subscriber based requests, multiple subscriber key values can be supplied. See section 2.7 for details.
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
Field Value Not Valid. The value for a given field is not valid based on the definition
FieldValueNotValid
in the SEC
Occurrence Constraint Violation. There are too many instances of a given field.
OccurenceConstraintViolation
Likely more than one instance of a non-repeatable field
Field Not Defined. The given field is not a valid field in the entity as defined in the
FieldDefinitionNotFound
SEC
Multiple rows match the given criteria. When updating a row, only one row can exist
MultipleRowsFound
that match the given row criteria
KeyNotFound Key Not Found. A subscriber/pool with the given key cannot be found
Examples
Request 1
A request is made to update the entire Quota entity. The subscriber has a Quota entity.
<updateFieldSet createEntityIfNotExist="false" create="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath/>
</data>
<content>
<![CDATA[
<usage>
<version>3</version>
<quota name="AggregateLimit">
<cid>9223372036854775807</cid>
<time>3422</time>
<totalVolume>1000</totalVolume>
<inputVolume>980</inputVolume>
<outputVolume>20</outputVolume>
<serviceSpecific>12</serviceSpecific>
<nextResetTime>2010-05-22T00:00:00-05:00</nextResetTime>
</quota>
</usage>
]]>
</content>
</entity>
</updateFieldSet>
Response 1
The request is successful, and the Quota entity was updated.
Request 2
A request is made to update the entire State entity. The subscriber does not have a State entity. The request
indicates that the entity is not created if it does not exist.
<updateFieldSet createEntityIfNotExist="false" create="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>State</name>
<interface>XMLIMPORT</interface>
<xpath/>
</data>
<content>
<![CDATA[
<state>
<version>1</version>
<property>
<name>mcc</name>
<value>315</value>
</property>
<property>
<name>expire</name>
<value>2014-02-09T11:20:32</value>
</property>
<property>
<name>approved</name>
<value>no</value>
</property>
</state>
]]>
</content>
</entity>
</updateFieldSet>
Response 2
The request fails. The errorValue indicates the opaque State entity does not exist.
[error 47 errorText : line lineNumber]
Request 3
A request is made to update the Q1 row in the Quota entity. The subscriber has a Quota entity, but the Q1 row
does not exist. The request indicates that the row is not created if it does not exist.
<updateFieldSet createEntityIfNotExist="false" create="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage</xpath>
</data>
<content>
<![CDATA[
<quota name="Q1">
<cid>9223372036854775807</cid>
<time>3422</time>
<totalVolume>1000</totalVolume>
<inputVolume>980</inputVolume>
<outputVolume>20</outputVolume>
<serviceSpecific>12</serviceSpecific>
<nextResetTime>2010-05-22T00:00:00-05:00</nextResetTime>
</quota>
]]>
</content>
</entity>
</updateFieldSet>
Response 3
The request fails. The errorValue indicates the row does not exist.
[error 23 errorText : line lineNumber]
Request 4
A request is made to update the Q1 row in the Quota entity. The subscriber has a Quota entity, but the Q1 row
does not exist. The request indicates that the row is created if it does not exist.
<updateFieldSet createEntityIfNotExist="false" create="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage</xpath>
</data>
<content>
<![CDATA[
<quota name="Q1">
<cid>9223372036854775807</cid>
<time>3422</time>
<totalVolume>1000</totalVolume>
<inputVolume>980</inputVolume>
<outputVolume>20</outputVolume>
<serviceSpecific>12</serviceSpecific>
<nextResetTime>2010-05-22T00:00:00-05:00</nextResetTime>
</quota>
]]>
</content>
</entity>
</updateFieldSet>
Response 4
The request is successful, and the Quota row was created.
Request 5
A request is made to update the Q1 row in the Quota entity. The subscriber does not have a Quota entity. The
request indicates that the entity is created if it does not exist. A version number is not specified, so the latest
version of the Quota entity is used to create Quota.
<updateFieldSet createEntityIfNotExist="true" create="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
<interface>XMLIMPORT</interface>
<xpath>/usage</xpath>
</data>
<content>
<![CDATA[
<quota name="Q1">
<cid>9223372036854775807</cid>
<time>3422</time>
<totalVolume>1000</totalVolume>
<inputVolume>980</inputVolume>
<outputVolume>20</outputVolume>
<serviceSpecific>12</serviceSpecific>
<nextResetTime>2010-05-22T00:00:00-05:00</nextResetTime>
</quota>
]]>
</content>
</entity>
</updateFieldSet>
Response 5
The request is successful, and the Quota row was created.
Request 6
A request is made to update the Q5 row in the Quota entity. The subscriber does not have a Quota entity. The
request indicates that the entity is created if it does not exist. The request specifies that the version 3 of the
Quota entity is used to create Quota.
<updateFieldSet createEntityIfNotExist="true" create="false">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage</xpath>
<version>
<name>version</name>
<value>3</value>
</version>
</data>
<content>
<![CDATA[
<quota name="Q5">
<cid>9223372036854775807</cid>
<time>3422</time>
<totalVolume>1000</totalVolume>
<inputVolume>980</inputVolume>
<outputVolume>20</outputVolume>
<serviceSpecific>12</serviceSpecific>
<nextResetTime>2010-05-22T00:00:00-05:00</nextResetTime>
</quota>
]]>
</content>
</entity>
</updateFieldSet>
Response 6
The request is successful, and the Quota row was created.
Request 7
A request is made to update the Q7 row in the Quota entity. The subscriber does not have a Quota entity. The
request indicates that the entity is created if it does not exist. The request specifies that the version 4 of the
Quota entity is used to create Quota. The version 4 of Quota does not exist.
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
Response 7
The request fails. The errorValue indicates that the version 4 does not exist.
[error 22 errorText : line lineNumber]
Request 8
A request is made to update the PDQ1 row in the PoolDynamicQuota entity. The pool has a PoolDynamicQuota
entity, but the PDQ1 row does not exist. The request indicates that the row is created if it does not exist.
<updateFieldSet createEntityIfNotExist="false" create="true">
<key>
<PoolID>10000</PoolID>
</key>
<entity>
<data>
<name>PoolDynamicQuota</name>
<interface>XMLIMPORT</interface>
<xpath>/definition</xpath>
</data>
<content>
<![CDATA[
<DynamicQuota name="PDQ1">
<Type>Roll-over</Type>
<InstanceId>15678</InstanceId>
<Priority>4</Priority>
<InitialTime>135</InitialTime>
<InitialTotalVolume>2000</InitialTotalVolume>
<InitialInputVolume>1500</InitialInputVolume>
<InitialOutputVolume>500</InitialOutputVolume>
<InitialServiceSpecific>4</InitialServiceSpecific>
<activationdatetime>2015-03-09T11:20:32</activationdatetime>
<expirationdatetime>2015-04-9T11:20:32</expirationdatetime>
<InterimReportingInterval>100</InterimReportingInterval>
<Duration>10</Duration>
</DynamicQuota>
]]>
</content>
</entity>
</updateFieldSet>
Response 8
The request is successful, and the PoolDynamicQuota row was created.
Request 9
A request is made to update the mcc property in the State entity. The subscriber has a State entity with the mcc
property. The request indicates that the row is updated if it exists.
<updateFieldSet createEntityIfNotExist="false" create="true">
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>State</name>
<interface>XMLIMPORT</interface>
<xpath>/state</xpath>
</data>
<content>
<![CDATA[
<property>
<name>mcc</name>
<value>315</value>
</property>
]]>
</content>
</entity>
</updateFieldSet>
Response 9
The request is successful, and the State property mcc was updated.
Request 10
A request is made to update the MnpSprn data. This is an example for UDR for DSR based vMNP solution with
MSISDN range as key.
<updateFieldSet createEntityIfNotExist="true" create="false">
<key>
<MSISDN>95606000001</MSISDN>
<MSISDN>95606000111</MSISDN>
</key>
<entity>
<data>
<name>MnpDataSPRN</name>
<type>range</type>
<interface>XMLIMPORT</interface>
<xpath />
</data>
<content>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<MnpSPRN>
<Type>RN</Type>
<EDigit>685477777</EDigit>
<RI>0</RI>
<PCDom>ansi</PCDom>
<SSN>3</SSN>
<SRFIMSI>111111111</SRFIMSI>
<DigAct>INSERTENTITYID</DigAct>
<PC>255-2555-255</PC>
</MnpSPRN>]]>
</content>
</entity>
</updateFieldSet>
Prerequisites
• A subscriber/pool with the keys of the keyNameX/keyValueX values supplied must exist.
• The supplied dataName must be a valid interface entity name for a subscriber/pool.
• The supplied dataXpath must reference a valid XML XPath where the specified fields in <fields> exist in
the transparent entity for the subscriber/pool.
• Each requested field fieldNameX must be a valid field in the specified transparent entity.
• For subscriber based requests, all supplied keys must reference the same subscriber.
Request
<deleteField>
<key>
<keyName1>keyValue1</keyName1>
[
<keyName2>keyValue2</keyName2>
:
<keyNameN>keyValueN</keyNameN>
]
</key>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
<xpath>dataXpath</xpath>
</data>
<fields>
<field name="fieldName1">[fieldValue1]</field>
[
<field name="fieldName2">[fieldValue2]</field>
:
<field name="fieldName250">[fieldValue250]</field>
]
</fields>
</entity>
</deleteField>
• dynamicQuotaInstanceId: (See dataXpath) The instance value that identifies the specific required
dynamic quota row in the DynamicQuota/PoolDynamicQuota entity
• dynamicQuotaType: (See dataXpath) The type that identifies the required dynamic quota row in the
DynamicQuota/PoolDynamicQuota entity
• propertyName: (See dataXpath) The name that identifies the required state property in the
State/PoolState entity
NOTES
• A maximum of 250 fields can be deleted in a single <deleteField> request.
• For subscriber based requests, multiple subscriber key values can be supplied. See section 2.7 for
details.
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
Field is not a multi-value field. Add and remove from list operations can only be
FieldNotMultiValued
performed on a multi-value field, and the field supplied is not multi-value
Field Not Defined. The given field is not a valid field in the entity as defined in the
FieldDefinitionNotFound
SEC
Multiple rows match the given criteria. When updating a row, only one row can exist
MultipleRowsFound
that match the given row criteria
KeyNotFound Key Not Found. A subscriber/pool with the given key cannot be found
Examples
Request 1
A request is made to delete the Tier and Custom1 fields. Both fields are valid subscriber profile fields.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="Tier"/>
<field name="Custom1"/>
</fields>
</entity>
</deleteField>
Response 1
The request is successful, and the two fields were deleted.
Request 2
A request is made to delete the message field. The field message is not a valid subscriber profile field.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="message"/>
</fields>
</entity>
</deleteField>
Response 2
The request fails. The errorValue indicates the message field was invalid.
[error 30 errorText : line lineNumber]
Request 3
A request is made to delete the EveningPass value from the multi-value field Entitlement retaining all other
values. The current value of the field is DayPass,Weekend,EveningPass.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
<field name="Entitlement">EveningPass</field>
</fields>
</entity>
</deleteField>
Response 3
The request is successful, and the Entitlement field was updated. The value of the field is DayPass,Weekend.
Request 4
A request is made to delete the inputVolume and outputVolume fields from the Q1 Quota row.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1']</xpath>
</data>
<fields>
<field name="inputVolume"/>
<field name="outputVolume"/>
</fields>
</entity>
</deleteField>
Response 4
The request is successful, and the two fields were deleted.
Request 5
A request is made to delete the totalVolume field with a value of 500 from the Q1 Quota row. The value of
outputVolume is 500.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1']</xpath>
</data>
<fields>
<field name="totalVolume">500</field>
</fields>
</entity>
</deleteField>
Response 5
The request is successful, and the field is deleted.
Request 6
A request is made to delete the totalVolume field with a value of 500 from the Q1 Quota row. The value of
outputVolume is 600 (it does not match the request).
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1']</xpath>
</data>
<fields>
<field name="totalVolume">500</field>
</fields>
</entity>
</deleteField>
Response 6
The request is successful, but the field is not deleted and contains the value 600.
Request 7
A request is made to delete the Custom3 field. Two key values are supplied, but these keys correspond to two
different subscribers.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
<IMSI>302370111111111</IMSI>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="Custom3"/>
</fields>
</entity>
</deleteField>
Response 7
The request fails. The errorValue indicates that the subscriber with the two supplied keys is not found.
[error 39 errorText : line lineNumber]
Request 8
A request is made to delete the MSISDN field with a value of 14161112222 for the subscriber. The subscriber has
3 MSISDN values, 15141234567, 14161112222, and 15145556666.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="MSISDN">14161112222</field>
</fields>
</entity>
</deleteField>
Response 8
The request is successful, and the MSISDN value 14161112222 is deleted. The subscriber has 2 MSISDNs,
15141234567 and 15145556666.
Request 9
A request is made to delete the MSISDN field for the subscriber. The subscriber has 2 MSISDN values,
5141234567 and 15145556666. The subscriber also has an IMSI value.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="MSISDN"/>
</fields>
</entity>
</deleteField>
Response 9
The request is successful, and the MSISDN field is deleted. The subscriber does not have any MSISDN values.
Request 10
A request is made to delete the MSISDN field for the subscriber. The subscriber has only a single key, an MSISDN
value 15141234567.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="MSISDN"/>
</fields>
</entity>
</deleteField>
Response 10
The request fails. The errorValue indicates that the subscriber must have at least one key value.
[error 62 errorText : line lineNumber]
Request 11
A request is made to delete the Custom5 field for a subscriber. Multiple key lookup is enabled. The IMSI and
MSISDN values provided both exist, but correspond to different subscribers.
<deleteField>
<key>
<IMSI>302370111111111</IMSI>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Subscriber</name>
<interface>XMLIMPORT</interface>
<xpath>/subscriber</xpath>
</data>
<fields>
<field name="Custom5"/>
</fields>
</entity>
</deleteField>
Response 11
The request fails. The errorValue indicates that all supplied keys do not correspond to the same subscriber.
[error 63 errorText : line lineNumber]
Request 12
A request is made to delete the InitialTotalVolume field with a value of 500 from the PDQ1 PoolDynamicQuota
row. The value of InitialTotalVolume is 500.
<deleteField>
<key>
<PoolID>10000</PoolID>
</key>
<entity>
<data>
<name>PoolDynamicQuota</name>
<interface>XMLIMPORT</interface>
<xpath>/definition/DynamicQuota[@name='PDQ1']</xpath>
</data>
<fields>
<field name="InitialTotalVolume">500</field>
</fields>
</entity>
</deleteField>
Response 12
The request is successful, and the field is deleted.
Request 13
A request is made to delete the totalVolume field with a value of 500 from the Q1 Quota row having cid of value
45678. The value of totalVolume is 500.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1' and cid='45678']</xpath>
</data>
<fields>
<field name="totalVolume">500</field>
</fields>
</entity>
</deleteField>
Response 13
The request is successful, and the field is deleted.
Request 14
A request is made to delete the mcc property with a value of 315 from the State entity. The value of mcc is 315.
<deleteField>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>State</name>
<interface>XMLIMPORT</interface>
<xpath>/state/property[name='mcc']</xpath>
</data>
<fields>
<field name="value">315</field>
</fields>
</entity>
</deleteField>
Response 14
The request is successful, and the field is deleted.
Prerequisites
• A subscriber/pool with the keys of the keyNameX/keyValueX values supplied must exist.
• The supplied dataName must be a valid interface entity name for a subscriber/pool.
• The supplied dataXpath must reference a valid field set in the entity for the subscriber/pool.
• For subscriber based requests, all supplied keys must reference the same subscriber.
Request
<deleteFieldSet>
<key>
<keyName1>keyValue1</keyName1>
[
<keyName2>keyValue2</keyName2>
:
<keyNameN>keyValueN</keyNameN>
]
</key>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
<xpath>dataXpath</xpath>
</data>
</entity>
</deleteFieldSet>
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
Occurrence Constraint Violation. There are too many instances of a given field.
OccurenceConstraintViolation
Likely more than one instance of a non-repeatable field
KeyNotFound Key Not Found. A subscriber/pool with the given key cannot be found
Examples
Request 1
A request is made to delete the Quota entity for a subscriber. The subscriber has a Quota entity.
<deleteFieldSet>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath/>
</data>
</entity>
</deleteFieldSet>
Response 1
The request is successful, and the Quota entity was deleted for the subscriber.
Request 2
A request is made to delete the State entity for a subscriber. The subscriber does not have a State entity.
<deleteFieldSet>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>State</name>
<interface>XMLIMPORT</interface>
<xpath/>
</data>
</entity>
</deleteFieldSet>
Response 2
The request is successful.
Request 3
A request is made to delete the Q1 row in the Quota entity for a subscriber. The subscriber has a Quota entity
with a row called Q1.
<deleteFieldSet>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1']</xpath>
</data>
</entity>
</deleteFieldSet>
Response 3
The request is successful, and the Q1 row in the Quota entity was deleted for the subscriber.
Request 4
A request is made to delete the Q2 row in the Quota entity for a subscriber. The subscriber has a Quota entity,
but it does not contain a row called Q2.
<deleteFieldSet>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q2']</xpath>
</data>
</entity>
</deleteFieldSet>
Response 4
The request fails. The errorValue indicates the Quota row Q2 does not exist.
[error 23 errorText : line lineNumber]
Request 5
A request is made to delete the PDQ1 row in the PoolDynamicQuota entity for a pool. The pool has a
PoolDynamicQuota entity with a row called PDQ1.
<deleteFieldSet>
<key>
<PoolID>10000</PoolID>
</key>
<entity>
<data>
<name>PoolDynamicQuota</name>
<interface>XMLIMPORT</interface>
<xpath>/definition/DynamicQuota[@name='PDQ1']</xpath>
</data>
</entity>
</deleteFieldSet>
Response 5
The request is successful, and the PDQ1 row in the PoolDynamicQuota entity was deleted for the pool.
Request 6
A request is made to delete the mcc property in the State entity for a subscriber. The subscriber has a State
entity with a property called mcc.
<deleteFieldSet>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>State</name>
<interface>XMLIMPORT</interface>
<xpath>/state/property[name='mcc']</xpath>
</data>
</entity>
</deleteFieldSet>
Response 6
The request is successful, and the mcc row in the State entity was deleted for the subscriber.
Request 7
A request is made to delete the Q1 row having cid with value 23456 in the Quota entity for a subscriber. The
subscriber has a Quota entity with a row called Q1 having cid 23456.
<deleteFieldSet>
<key>
<MSISDN>15141234567</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1' and cid='23456']</xpath>
</data>
</entity>
</deleteFieldSet>
Response 7
The request is successful, and the Q1 row having cid 23456 in the Quota entity was deleted for the subscriber.
8.1.1 Reset
Description
This operation resets the field values in an entity (or specified row in an entity) for a subscriber/pool. The values
are reset to the values defined in the SEC.
Prerequisites
• A subscriber/pool with the keys of the keyNameX/keyValueX values supplied must exist.
• The supplied dataName must be a valid interface entity name for a subscriber/pool.
• The supplied dataXpath must reference a valid field entity/row for the subscriber/pool.
• For subscriber based requests, all supplied keys must reference the same subscriber.
NOTE: When an entity/row instance is reset using the “Reset” command, each resettable field is set to its
defined reset value. If the field does not exist, it is not created. But, if a resettable field does not exist, and the
field has a default value, then the field is created with the default value.
Request
<reset>
<key>
<keyName1>keyValue1</keyName1>
[
<keyName2>keyValue2</keyName2>
:
<keyNameN>keyValueN</keyNameN>
]
</key>
<entity>
<data>
<name>dataName</name>
<interface>dataInterface</interface>
<xpath>dataXpath</xpath>
</data>
</entity>
</reset>
• dataXpath: XML XPath value which corresponds to the row element for which the reset operation needs
to be performed
o Value is /usage/quota[@name=’quotaName’] for a Quota or PoolQuota row without an instance
specified
o Value is /usage/quota[@name=’quotaName’ and cid='quotaCid'] for a Quota or PoolQuota row
with an instance specified
• quotaName: (See dataXpath) The name that identifies the required quota row in the Quota/PoolQuota
entity
• quotaCid: (See dataXpath) The instance value that identifies the specific required quota row in the
Quota/PoolQuota entity
NOTE: For subscriber based requests, multiple subscriber key values can be supplied. See section 2.7 for details.
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
EntityDefinitionNoReset Entity Cannot be Reset. The reset command cannot be used on the requested entity
Multiple rows match the given criteria. When updating a row, only one row can exist
MultipleRowsFound
that match the given row criteria
KeyNotFound Key Not Found. A subscriber/pool with the given key cannot be found
Examples
Request 1
A request is made to reset the Q1 Quota row for a subscriber. The subscriber has Quota data, and the Quota
data contains a Quota row called Q1.
<reset>
<key>
<MSISDN>33123654862</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1']</xpath>
</data>
</entity>
</reset>
Response 1
The request is successful, and the specified Quota row was reset.
Request 2
A request is made to reset the Q1 Quota row. The subscriber does not have Quota data. Two subscriber
addresses are supplied, and multiple key lookup is enabled.
<reset>
<key>
<MSISDN>15141234567</MSISDN>
<IMSI>302370123456789</IMSI>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q1']</xpath>
</data>
</entity>
</reset>
Response 2
The request fails. The subscriber with both keys exists, but the errorValue indicates the subscriber does not have
Quota data.
[error 47 errorText : line lineNumber]
Request 3
A request is made to reset the Q6 Quota row. The subscriber has Quota data, but the Quota data does not
contain a Quota row called Q6.
<reset>
<key>
<MSISDN>33123654862</MSISDN>
</key>
<entity>
<data>
<name>Quota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='Q6']</xpath>
</data>
</entity>
</reset>
Response 3
The request fails. The errorValue indicates the Q6 data row was not present.
[error 29 errorText : line lineNumber]
Request 4
A request is made to reset the PQ1 PoolQuota row with a cid of 77 for a pool. The pool has PoolQuota data, and
the PoolQuota data contains a row called PQ1 with a cid of 77.
<reset>
<key>
<PoolID>100000</PoolID>
</key>
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
<entity>
<data>
<name>PoolQuota</name>
<interface>XMLIMPORT</interface>
<xpath>/usage/quota[@name='PQ1' and cid='77']</xpath>
</data>
</entity>
</reset>
Response 4
The request is successful, and the specified PoolQuota row was reset.
Prerequisites
A subscriber with any of the keys supplied in the subscriber profile must not exist.
Request
<restoreSubscriber>
<subscriberData>
<ae>ae</ae>
<subscriberLastUpdateTime>subscriberLUT</subscriberLastUpdateTime>
<notificationSubscriptionLastUpdateTime>nsLUT</notificationSubscriptionLastUpdateTime>
<entity>
<name>Profile</name>
<seqnum>entitySeqnum1</seqnum>
<data> <![CDATA[
entityData1
]]></data>
</entity>
[
<entity>
<name>entityName2</name>
<seqnum>entitySeqnum2</seqnum>
<data> <![CDATA[
entityData2
]]></data>
</entity>
:
<entity>
<name>entityNameN</name>
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
<seqnum>entitySeqnumN</seqnum>
<data> <![CDATA[
entityDataN
]]></data>
</entity>
]
[
<notificationSubscription>
<client>client1</client>
<userIdentity>userIdentity1</userIdentity>
<creationTime>creationTime1</creationTime>
<expirationTime>expirationTime1</expirationTime>
<notEff>notEff1</notEff>
</notificationSubscription>
:
<notificationSubscription>
<client>clientN</client>
<userIdentity>userIdentityN</userIdentity>
<creationTime>creationTimeN</creationTime>
<expirationTime>expirationTimeN</expirationTime>
<notEff>notEffN</notEff>
</notificationSubscription>
]
</subscriberData>
</restoreSubscriber>
• poolId: PoolID value of the pool the subscriber is a member of. Numeric value, 1 to 22 digits in length
Values: 1 to 9999999999999999999999
NOTE: If the subscriber is not a member of a pool, then a PoolID value is not given
• ae: Flag indicating if the subscriber is considered as auto-enrolled or not
Value is either true or false
• subscriberLUT: The date/time when the data for the subscriber was last updated. Numeric value
indicating number of seconds since midnight on January 1st 1970, in UTC time
Values: 0 to 4294967295
• nsLUT: The most recent date/time when a notification subscription for the subscriber was either added
or removed. Numeric value indicating number of seconds since midnight on January 1st 1970, in UTC
time
Values: 0 to 4294967295
• entityNameX: A user defined entity type/name for the subscriber entity
Value is either Profile, Quota, State, or DynamicQuota
• entitySeqnumX: The sequence number associated with the subscriber entity (as used on the Diameter Sh
interface)
Values: 0 is 65535
• entityDataX: Contents of the subscriber XML data blob
• clientX: Subscribing client name of the subscribing entity. For example, a Diameter FQDN as used on the
Diameter Sh interface
• userIdentityX: The identity value supplied by the subscribing client to identify the subscriber (such as an
IMSI, MSISDN, NAI) in network specific format
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
• creationTimeX: The date/time when the notification subscription was created. Numeric value indicating
number of seconds since midnight on January 1st 1970, in UTC time
Values: 0 is 4294967295
• expirationTimeX: The date/time when the notification subscription expires. Numeric value indicating
number of seconds since midnight on January 1st 1970, in UTC time
Values: 0 is 4294967295
• notEffX: Flag indicating if the client allows multiple entities to be included in a single notification (for
example when sending a PNR request on the Diameter Sh interface)
Value is either true or false
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
KeyNotFound Key Not Found. A subscriber/pool with the given key cannot be found
KeyAlreadyExists Key Already Exists. A subscriber/pool exists with the given key
Examples
Request 1
A request is made to restore a subscriber, who has Quota data. The subscriber is in a pool which has a poolId of
100000. The subscriber does not have active notification subscriptions.
<restoreSubscriber>
<subscriberData>
<poolId>100000</poolId>
<ae>false</ae>
<subscriberLastUpdateTime>1436798453</subscriberLastUpdateTime>
<notificationSubscriptionLastUpdateTime>1436798453</notificationSubscriptionLastUpdateTi
me>
<entity>
<name>Profile</name>
<seqnum>5</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><subscriber><field name="AccountId
">10404723525</field><field name="MSISDN">15141234567</field><field name="IMSI">3023701234567
89</field><field name="BillingDay">1</field><field name="Tier">Gold</field><field name="Entit
lement">DayPass</field><field name="Entitlement">DayPassPlus</field></subscriber>]]></data>
</entity>
<entity>
<name>Quota</name>
<seqnum>12</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><usage><version>3</version><quota
name="AggregateLimit"><cid>9223372036854775807</cid><time>3422</time><totalVolume>1000</totalVolume><inp
utVolume>980</inputVolume><outputVolume>20</outputVolume><serviceSpecific>12</serviceSpecific><nextReset
Time>2015-07-22T00:00:00-05:00</nextResetTime></quota></usage>]]></data
>
</entity>
</subscriberData>
</restoreSubscriber>
Response 1
The request is successful, and the subscriber was restored.
Request 2
A request is made to restore an auto-enrolled subscriber. The subscriber has two active notification
subscriptions.
<restoreSubscriber>
<subscriberData>
<poolId/>
<ae>true</ae>
<subscriberLastUpdateTime>1436798453</subscriberLastUpdateTime>
<notificationSubscriptionLastUpdateTime>1436817543</notificationSubscriptionLastUpdateTi
me>
<entity>
<name>Profile</name>
<seqnum>0</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><subscriber><field name="MSISDN">
15145551234</field><field name="BillingDay">0</field></subscriber>]]></data>
</entity>
<notificationSubscription>
<client>mpe6.policy.operator.com</client>
<userIdentity>tel:15145551234</userIdentity>
<creationTime>1436798453</creationTime>
<expirationTime>0</expirationTime>
<notEff>true</notEff>
</notificationSubscription>
<notificationSubscription>
<client>mpe3.policy.operator.com</client>
<userIdentity>tel:15145551234</userIdentity>
<creationTime>1436796002</creationTime>
<expirationTime>0</expirationTime>
<notEff>true</notEff>
</notificationSubscription>
</subscriberData>
</restoreSubscriber>
Response 2
The request is successful, and the subscriber was restored.
Prerequisites
• A pool with PoolID supplied in the pool profile must not exist.
• A subscriber with any of the keys supplied in the contained subscriber profiles must not exist.
Request
<restorePool [ignoreExists="ignoreExists"]>
<poolData>
<entity>
<name>PoolProfile</name>
<seqnum>entitySeqnum1</seqnum>
<data> <![CDATA[
poolEntityData1
]]></data>
</entity>
[
<entity>
<name>poolEntityName2</name>
<seqnum>poolEntitySeqnum2</seqnum>
<data> <![CDATA[
poolEntityData2
]]></data>
</entity>
:
<entity>
<name>poolEntityNameN</name>
<seqnum>poolEntitySeqnumN</seqnum>
<data> <![CDATA[
poolEntityDataN
]]></data>
</entity>
]
[
<subscriberData>
<ae>ae</ae>
<subscriberLastUpdateTime>subscriberLUT</subscriberLastUpdateTime>
<notificationSubscriptionLastUpdateTime>nsLUT</notificationSubscriptionLastUpdateTime>
<entity>
<name>Profile</name>
<seqnum>entitySeqnum1</seqnum>
<data> <![CDATA[
entityData1
]]></data>
</entity>
[
<entity>
<name>entityName2</name>
<seqnum>entitySeqnum2</seqnum>
<data> <![CDATA[
entityData2
]]></data>
</entity>
:
<entity>
<name>entityNameN</name>
<seqnum>entitySeqnumN</seqnum>
<data> <![CDATA[
entityDataN
]]></data>
</entity>
]
[
<notificationSubscription>
<client>client1</client>
<userIdentity>userIdentity1</userIdentity>
<creationTime>creationTime1</creationTime>
<expirationTime>expirationTime1</expirationTime>
<notEff>notEff1</notEff>
</notificationSubscription>
:
<notificationSubscription>
<client>clientN</client>
<userIdentity>userIdentityN</userIdentity>
<creationTime>creationTimeN</creationTime>
<expirationTime>expirationTimeN</expirationTime>
<notEff>notEffN</notEff>
</notificationSubscription>
]
</subscriberData>
:
<subscriberData>
</subscriberData>
]
</poolData>
</restorePool>
• ignoreExists: (Optional) Indicates whether the processing of adding subscribers to the pool continues as
usual rather than returning an error if a subscriber exists in the pool.
Values:
o true
The processing of adding subscribers to the pool continues as usual if the subscriber exists.
o False
The processing of adding subscribers to the pool returns an error if the subscriber exists. (default
value)
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
Response
If the request fails, a failure response is indicated as described in section 3.2.5. The different values of errorValue
in the failure response are indicated in the Error Codes section below.
Error Codes
KeyNotFound Key Not Found. A subscriber/pool with the given key cannot be found
KeyAlreadyExists Key Already Exists. A subscriber/pool exists with the given key
Examples
Request 1
A request is made to restore a pool that has PoolQuota and PoolState data. The pool does not contain any
subscribers.
<restorePool>
<poolData>
<entity>
<name>PoolProfile</name>
<seqnum>4</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><pool><field name="PoolID">100000<
/field><field name="BillingDay">1</field><field name="Entitlement">DayPass</field><field name
="Entitlement">DayPassPlus</field></pool>]]></data>
</entity>
<entity>
<name>PoolQuota</name>
<seqnum>27</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><usage><version>3</version><quota
name="AggregateLimit"><cid>9223372036854775807</cid><time>3422</time><totalVolume>1000</totalVolume><inp
utVolume>980</inputVolume><outputVolume>20</outputVolume><serviceSpecific>12</serviceSpecific><nextReset
Time>2015-07-22T00:00:00-05:00</nextResetTime></quota></usage>]]></data>
</entity>
<entity>
<name>PoolState</name>
<seqnum>11</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><state><version>1</version><proper
ty><name>mcc</name><value>315</value></property><property><name>expire</name><value>2015-08-0
9T11:20:32</value></property><property><name>approved</name><value>yes</value></property></state>]]></da
ta>
</entity>
</poolData>
</restorePool>
Response 1
The request is successful, and the pool was restored.
Request 2
A request is made to restore a pool that contains 2 subscribers.
<restorePool>
<poolData>
<entity>
<name>PoolProfile</name>
<seqnum>4</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><pool><field name="PoolID">100000<
/field><field name="BillingDay">1</field><field name="Entitlement">DayPass</field><field name
="Entitlement">DayPassPlus</field></pool>]]></data>
</entity>
<entity>
<name>PoolQuota</name>
<seqnum>27</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><usage><version>3</version><quota
name="AggregateLimit"><cid>9223372036854775807</cid><time>3422</time><totalVolume>1000</totalVolume><inp
utVolume>980</inputVolume><outputVolume>20</outputVolume><serviceSpecific>12</serviceSpecific><nextReset
Time>2015-07-22T00:00:00-05:00</nextResetTime></quota></usage>]]></data>
</entity>
<entity>
<name>PoolState</name>
<seqnum>11</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><state><version>1</version><proper
ty><name>mcc</name><value>315</value></property><property><name>expire</name><value>2015-08-0
9T11:20:32</value></property><property><name>approved</name><value>yes</value></property></state>]]></da
ta>
</entity>
<subscriberData>
<poolId>100000</poolId>
<ae>false</ae>
<subscriberLastUpdateTime>1436798453</subscriberLastUpdateTime>
<notificationSubscriptionLastUpdateTime>1436817543</notificationSubscriptionLastUpdateT
ime>
<entity>
<name>Profile</name>
<seqnum>0</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><subscriber><field name="Account
Id">10404723525</field><field name="MSISDN">15141234567</field><field name="IMSI">30237012345
6789</field><field name="BillingDay">1</field><field name="Tier">Gold</field><field name="Ent
itlement">DayPass</field><field name="Entitlement">DayPassPlus</field></subscriber>]]></data>
</entity>
<entity>
<name>Quota</name>
<seqnum>12</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><usage><version>3</version><quot
a name="AggregateLimit"><cid>9223372036854775807</cid><time>3422</time><totalVolume>1000</tot
alVolume><inputVolume>980</inputVolume><outputVolume>20</outputVolume><serviceSpecific>12</serviceSpecif
ic><nextResetTime>2015-07-22T00:00:00-05:00</nextResetTime></quota></usage>]]></da
ta>
</entity>
<notificationSubscription>
<client>mpe6.policy.operator.com</client>
<userIdentity>tel:15141234567</userIdentity>
<creationTime>1436798453</creationTime>
<expirationTime>0</expirationTime>
<notEff>true</notEff>
</notificationSubscription>
</subscriberData>
<subscriberData>
<poolId>100000</poolId>
<ae>false</ae>
<subscriberLastUpdateTime>1436792233</subscriberLastUpdateTime>
<notificationSubscriptionLastUpdateTime>1436816011</notificationSubscriptionLastUpdateT
ime>
<entity>
<name>Profile</name>
<seqnum>17</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><subscriber><field name="Account
Id">10404712881</field><field name="MSISDN">15145551234</field><field name="IMSI">30237055555
4444</field><field name="BillingDay">3</field><field name="Tier">Silver</field><field name="E
ntitlement">DayPass</field></subscriber>]]></data>
</entity>
<entity>
<name>Quota</name>
<seqnum>20</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><usage><version>3</version><quot
a name="AggregateLimit"><cid>9223372036858772097</cid><time>3122</time><totalVolume>2000</tot
alVolume><inputVolume>9220</inputVolume><outputVolume>30</outputVolume><serviceSpecific>222</serviceSpec
ific><nextResetTime>2015-07-22T00:00:00-05:00</nextResetTime></quota></usage>]]></
data>
</entity>
</subscriberData>
</poolData>
</restorePool>
Response 2
The request is successful, and the pool containing two subscribers was restored.
Request 3
A request is made to restore an enterprise pool.
<restorePool>
<poolData>
<entity>
<name>PoolProfile</name>
<seqnum>4</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><pool><field name="PoolID">100000<
/field><field name="BillingDay">1</field><field name="Entitlement">DayPass</field><field name
="Entitlement">DayPassPlus</field>><field name="Type">Enterprise</field></pool>]]></data>
</entity>
</poolData>
</restorePool>
Response 3
The request is successful, and the pool is restored as an enterprise pool.
Request 4
A request is made to restore a pool that contains 2 subscribers. The ignoreExists flag is set to true. Subscribers
are being added during the restore and one of them exists in the pool.
<restorePool ignoreExists="true">
<poolData>
<entity>
<name>PoolProfile</name>
<seqnum>4</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><pool><field name="PoolID">100000<
/field><field name="BillingDay">1</field><field name="Entitlement">DayPass</field><field name
="Entitlement">DayPassPlus</field></pool>]]></data>
</entity>
<entity>
<name>PoolQuota</name>
<seqnum>27</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><usage><version>3</version><quota
name="AggregateLimit"><cid>9223372036854775807</cid><time>3422</time><totalVolume>1000</totalVolume><inp
utVolume>980</inputVolume><outputVolume>20</outputVolume><serviceSpecific>12</serviceSpecific><nextReset
Time>2015-07-22T00:00:00-05:00</nextResetTime></quota></usage>]]></data>
</entity>
<entity>
<name>PoolState</name>
<seqnum>11</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><state><version>1</version><proper
ty><name>mcc</name><value>315</value></property><property><name>expire</name><value>2015-08-0
Release 12.5.1 March 2019
Oracle Communications User Data Repository Bulk Import/Export File Specification
9T11:20:32</value></property><property><name>approved</name><value>yes</value></property></state>]]></da
ta>
</entity>
<subscriberData>
<poolId>100000</poolId>
<ae>false</ae>
<subscriberLastUpdateTime>1436798453</subscriberLastUpdateTime>
<notificationSubscriptionLastUpdateTime>1436817543</notificationSubscriptionLastUpdateT
ime>
<entity>
<name>Profile</name>
<seqnum>0</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><subscriber><field name="Account
Id">10404723525</field><field name="MSISDN">15141234567</field><field name="IMSI">30237012345
6789</field><field name="BillingDay">1</field><field name="Tier">Gold</field><field name="Ent
itlement">DayPass</field><field name="Entitlement">DayPassPlus</field></subscriber>]]></data>
</entity>
<entity>
<name>Quota</name>
<seqnum>12</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><usage><version>3</version><quot
a name="AggregateLimit"><cid>9223372036854775807</cid><time>3422</time><totalVolume>1000</tot
alVolume><inputVolume>980</inputVolume><outputVolume>20</outputVolume><serviceSpecific>12</serviceSpecif
ic><nextResetTime>2015-07-22T00:00:00-05:00</nextResetTime></quota></usage>]]></da
ta>
</entity>
<notificationSubscription>
<client>mpe6.policy.operator.com</client>
<userIdentity>tel:15141234567</userIdentity>
<creationTime>1436798453</creationTime>
<expirationTime>0</expirationTime>
<notEff>true</notEff>
</notificationSubscription>
</subscriberData>
<subscriberData>
<poolId>100000</poolId>
<ae>false</ae>
<subscriberLastUpdateTime>1436792233</subscriberLastUpdateTime>
<notificationSubscriptionLastUpdateTime>1436816011</notificationSubscriptionLastUpdateT
ime>
<entity>
<name>Profile</name>
<seqnum>17</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><subscriber><field name="Account
Id">10404712881</field><field name="MSISDN">15145551234</field><field name="IMSI">30237055555
4444</field><field name="BillingDay">3</field><field name="Tier">Silver</field><field name="E
ntitlement">DayPass</field></subscriber>]]></data>
</entity>
<entity>
<name>Quota</name>
<seqnum>20</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><usage><version>3</version><quot
a name="AggregateLimit"><cid>9223372036858772097</cid><time>3122</time><totalVolume>2000</tot
alVolume><inputVolume>9220</inputVolume><outputVolume>30</outputVolume><serviceSpecific>222</serviceSpec
ific><nextResetTime>2015-07-22T00:00:00-05:00</nextResetTime></quota></usage>]]></
data>
</entity>
</subscriberData>
</poolData>
</restorePool>
Response 4
The request is successful, and the pool containing two subscribers was restored.
Request 5
A request is made to restore a pool that has PoolQuota and PoolState data and the PoolID is in the remote UDR
key range. The PSO feature is enabled. The pool does not contain any subscribers.
<restorePool>
<poolData>
<entity>
<name>PoolProfile</name>
<seqnum>4</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><pool><field name="PoolID">100000<
/field><field name="BillingDay">1</field><field name="Entitlement">DayPass</field><field name
="Entitlement">DayPassPlus</field></pool>]]></data>
</entity>
<entity>
<name>PoolQuota</name>
<seqnum>27</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><usage><version>3</version><quota
name="AggregateLimit"><cid>9223372036854775807</cid><time>3422</time><totalVolume>1000</totalVolume><inp
utVolume>980</inputVolume><outputVolume>20</outputVolume><serviceSpecific>12</serviceSpecific><nextReset
Time>2015-07-22T00:00:00-05:00</nextResetTime></quota></usage>]]></data>
</entity>
<entity>
<name>PoolState</name>
<seqnum>11</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><state><version>1</version><proper
ty><name>mcc</name><value>315</value></property><property><name>expire</name><value>2015-08-0
9T11:20:32</value></property><property><name>approved</name><value>yes</value></property></state>]]></da
ta>
</entity>
</poolData>
</restorePool>
Response 5
The request is successful, and only the pool profile entity is restored. The pool is a Non Pool Host UDR pool.
Request 6
A request is made to restore an enterprise pool. PSO feature is enabled.The PoolID falls in a range that is
maintained by a different UDR instance.
<restorePool>
<poolData>
<entity>
<name>PoolProfile</name>
<seqnum>4</seqnum>
<data><![CDATA[<?xml version="1.0" encoding="UTF-8"?><pool><field name="PoolID">100000<
/field><field name="BillingDay">1</field><field name="Entitlement">DayPass</field><field name
="Entitlement">DayPassPlus</field>><field name="Type">Enterprise</field></pool>]]></data>
</entity>
</poolData>
</restorePool>
Response 6
The request fails. The errorValue indicates this operation is not allowed on Non Pool Host UDR.
[error 50 errorText : line lineNumber]
Error Codes
Error codes are returned in the errorValue code of the import log file response when a request fails (see section
3.2.5). The complete set of error codes and their associated values are defined in the following table.
The Type column indicates if an error is permanent (P) or temporary (T), or indicates success (S). A request that
results in a permanent error is discarded and not sent again. A request that results in a temporary can be sent
again at a different time, and may be successful.
Error codes that are marked with an * (asterisk) are permanent errors that can be fixed by means of
configuration, such as configuring the entities/fields in the SEC.
Field Value Not Valid. The value for a given field is not
FieldValueNotValid 18 P*
valid based on the definition in the SEC
Parameter Description
Remote Host IP Address The IP address and username of Remote Import/Export Host.
The directory in the Remote Export Host to which export files are
Remote Export Directory transferred if configured.
Default is ; Range is 0 to 255 characters
My Oracle Support
My Oracle Support (https://support.oracle.com) is your initial point of contact for all product support and training
needs. A representative at Customer Access Support (CAS) can assist you with My Oracle Support registration.
Call the CAS main number at 1-800-223-1711 (toll-free in the US), or call the Oracle Support hotline for your
local country from the list at http://www.oracle.com/us/support/contact/index.html. When calling, make the selections
in sequence on the Support telephone menu:
1. Select 2 for New Service Request
2. Select 3 for Hardware, Networking and Solaris Operating System Support
3. Select one of the following options:
o For Technical issues such as creating a Service Request (SR), Select 1
o For Non-technical issues such as registration or assistance with My Oracle Support, Select 2
You are connected to a live agent who can assist you with My Oracle Support registration and opening a support
ticket.
My Oracle Support is available 24 hours a day, 7 days a week, 365 days a year.