Go to main content
1/54
Contents
Title and Copyright Information
Preface
Audience
Downloading Oracle Communications Documentation
Documentation Accessibility
Document Revision History
Part I Introduction to Customizing BRM
1
About Customizing BRM
About Customizing BRM
Customizing Service Integration
Planning Your Customization
Guidelines for Customizing BRM
About the BRM Client Access Libraries
Skills Required for Customizing BRM
BRM Programming Tools
2
Implementation Defaults
Defaults for Offering Plans and Deals to Customers
Defaults for Creating Customer Accounts
Defaults for Login Names and Passwords
Defaults for Validating Customer Registration Information
Defaults for Validating Payment Information
Defaults for Displaying and Sending Introductory Messages
Defaults for Billing
Defaults for Tax Calculation
Defaults for Payments and A/R
Defaults for Maintaining an Audit Trail of BRM Activity
3
Understanding Flists and Storable Classes
About Flists
Contents of an Flist
Flist Field Data Types
About Creating and Using an Flist
About Adding Information to Flists
About Removing Data (Pointers) from an Flist
About Copying Data from an Flist
Flist Creation Samples
About Destroying Flists
Flist Management Rules
Flist Field Memory Management Guidelines
Handling Errors
About Storable Classes and Storable Objects
Class Naming and Formatting Conventions
Class Inheritance
Subclassing
About Defining Storable Classes
Fields Common to All Storable Classes
Defining New Fields for Storable Classes
Reading Objects
Reading Objects by Using Opcodes
Improving Performance when Locking Objects
Reading an Entire Object
Reading Fields in an Object
Reading Objects by Using Object Browser
Starting Object Browser
Viewing an Object in the Database
Disabling Granular Object Locking
Creating, Editing, and Deleting Objects
Creating Objects
Writing Fields in Objects
Incrementing Fields in Objects
Deleting Objects
Deleting Fields in Objects
Managing a Large Number of Objects
Creating a Large Number of Objects
Editing a Large Number of Objects
Deleting a Large Number of Objects
Locking Objects when Editing or Deleting a Large Number of Objects
Improving Performance when Working with Objects
Locking Specific Objects
4
Understanding the PCM API and the PIN Library
About the PIN Library
About the PCM API
Header Files
Opcode Input and Output Specifications
Field Permissions
About Opcode Usage
About Transaction Usage
Transaction Handling: Required
Transaction Handling: Requires New
Transaction Handling: Supports
Calling PCM Opcodes
Manipulating Objects in Custom Applications
Context Management Opcodes
Base Opcodes
Search and Global Search Opcodes
FM Opcodes
About the PREP and VALID Opcodes
Validating Fields by Using Field Validation Editor
Supporting an Older Version of BRM
Creating Customization Interfaces
Accessing pin.conf Files in Custom Code
Using /config/business_params Objects
Adding and Loading New Parameters
Adding and Loading New Parameter Classes
Examples of Accessing Business Parameters in Custom Code
5
Understanding the BRM Data Types
About the BRM Data Types
Simple Data Types
Portal Object ID (POID)
Decimal Data Type
Arrays
Substructure
Buffer Data
Setting Buffer Data Fields in an Flist
Getting Buffer Fields From an Flist
Specifying Buffer Data Fields in Flist Converted to Strings
Error Buffer
6
Understanding API Error Handling and Logging
About the Error Handling Routines in BRM
Error Detection
Individual-Style ebuf
Series-Style ebuf
Error Handling Flow
Logging Errors and Messages
Debugging Your Applications
Diagnosing Application Problems
Detecting CM and DM Errors
7
Using BRM Developer Tools
About BRM SDK
BRM SDK Directory Contents
About PCM SDK
Setting Up Your Development Environment
Testing New or Customized Components
Testing Custom Applications
Testing New or Customized Policy FMs
Testing New or Customized DMs
Deploying New and Customized Components
Deploying Applications
Deploying FMs
Deploying DMs
Compiling CMs for Purify
About Developer Center
Installing Developer Center
Getting Started with Developer Center
Using Developer Center Applications
8
Testing Your Applications and Custom Modules
Using Opcode Workbench
Starting Opcode Workbench
Executing an Opcode
Defining the Content of the Opcode Field
Opcodes Not Supported in Opcode Workbench
Using testnap
Creating Objects
Using a Text File to Create an Object
Using a Here Document to Create an Object
Reading an Object and Fields
Reading Fields in an Object
Reading an Object and Writing Its Contents to a File
Manipulating External Buffer Fields
Reading Data in a Buffer to a File
Using Buffers to Concatenate Flists
Setting up Buffers and Displaying the List of Buffers
Creating and Displaying the Contents of a Buffer
Executing Opcodes
Retrieving Objects
Retrieving the Contents of the First Object Found
Retrieving the POID Field of the Objects Found
Creating a New Search Object
Retrieving Objects One at a Time
Retrieving a Specific Number of Objects at a Time
Modifying Objects
Sorting an Flist
Invoking Shell Commands
Testing the CM to DM Connection
Displaying and Setting Properties of testnap
Displaying Property Settings
Setting or Changing Properties
Troubleshooting testnap
Error 27: Connection Error
Error 4: Login Failure
Incorrect Database Number
Error 26: DM Not Running
Invalid Buffer Index
Error 56: Failed to Connect
Part II Customizing BRM Server Components
9
Adding and Modifying Policy Facilities Modules
Understanding System and Policy Facilities Modules
System FM Functions
Policy FM Functions
Policy Opcodes
Using the Policy Opcode Source Files
Using the Default Implementation with Your Custom Implementation
Adding a New Policy
Handling Transactions in Custom Policy FMs
Compiling and Linking a Policy FM
Configuring Your New Policy FM
10
Writing a Custom Facilities Module
About Customizing System FMs
About Implementing Custom FMs
Creating a New FM
Defining New Opcodes
Defining Input and Output Flist Specifications
Defining New Storable Class and Field Definitions
Writing a Function to Implement a New Opcode
Using the fm_post_init Function to Call Non-Base Opcodes at CM Initialization
Creating an Opcode-to-Function Mapping File
Creating a Shared Library for a New FM
About Configuring a New FM into a CM
Adding a New FM Module to the CM Configuration File
Initializing Objects for Multiple Processes
Handling Transactions in Custom FMs
Managing Memory in Custom FMs
Opening a New Context in an FM
Compiling and Linking a Custom FM
Debugging FMs
11
Writing a Custom Data Manager
About Adding a Custom Data Manager
About Mapping Storable Objects to Alternate Storage Mechanisms
About Adding Interfaces to Legacy Systems
Understanding the Data Manager Interface
Calling Conventions
Data Manager Memory Model
Function Entry Points
Argument Descriptions
About Creating a New Data Manager
Handling Errors
Managing Memory
Creating a New Data Manager
Writing, Compiling, and Linking a Custom DM
Configuring Your Custom DM
Starting and Stopping Your Custom DM
Configuring Your CM to Use the Custom DM
Editing Your Custom Opcodes to Access the Custom DM
12
Customizing Information Stored in the Database
About Tracking Changes to Object Fields
Audit Trail Architecture
About Shadow Objects
Specifying Audit Trail Tablespaces
Audit Trail Tablespace Names
Fields Marked for Auditing by Default
Enabling Auditing for a Field
Performance Tips
Disabling Auditing for a Field
Accessing Audit Trail Information
Required Information
Finding the Audit Trail Data
Using testnap to Retrieve Shadow Objects
Archiving Audit Data
About Encrypting Information
About AES Encryption
About AES Data Encryption Length
About MD5 Encryption
About MD5 Data Encryption Length
About Masking Data in Log Files
Encrypting Fields
Defining Masked Fields
Generating an Encrypted AES Key
Replacing an Encrypted AES Key
About Encrypting Passwords
Encrypting Passwords Manually
About the encryptpassword.pl Script
Encrypting Passwords Automatically for BRM Base Components
Configuring the Data Manager for MD5 decryption
Configuring the Data Manager for AES Encryption
Encrypting the Password
Encrypting the Data
Migrating Data from MD5 to AES Encryption
Configuring the Data Manager for Oracle ZT PKI Encryption
Encrypting the Data
Generating a Root Encryption Key
Modifying a Root Encryption Key
Modifying the Root Encryption Key on Single-Schema Systems
Modifying the Root Encryption Key on Multischema Systems
Enabling Password Restriction for /service Objects
About Storing Customer Profile Information
Using Profile Objects to Collect Customer Profiles
Defining a Profile Subclass
Creating a Profile Object
Modifying a Profile Object
Deleting a Profile Object
Validating Profile Objects
13
Searching for Objects in the BRM Database
About Searching for Objects
About Search Templates
About the Search Input Flist
Search POID
Argument List
Results Array
Search Query
Flags
Search Query Syntax
About Searching for Objects by Their POID Subcomponent
Searching for Objects by the POID Database Number
Searching for Objects by the POID Type
Searching for Objects by the POID Object ID
Searching for Objects by the POID Revision Number
Search Query Syntax for Count-Only Searches
Search Query Syntax for Calculate-Only Searches
Using the PIN_FLD_PARAMETERS Field
Limiting Search Results by Using the PIN_FLD_MIN_ROW and PIN_FLD_MAX_ROW Fields
Using the "in" Operator
Searching Subclasses
Returning Specific Classes
Returning Entire Arrays
Search Template Examples
Using a Predefined Template
Defining the Search Template at Runtime
About Single-Schema Searches
Performing a Search on a Single Schema
Performing a Step Search on a Single Schema
Getting the Next Set of Search Results from a Step Search
Ending a Step Search
Simple Search Example
Step Search Example
Performing Exact Searches
Using "like" with Exact Searches
Exact Search Limitations
Complex Searches
Complex Search Example
Search without POID
About Multischema (Global) Searches
Performing a Global Search
Performing a Global Step Search
Getting the Next Set of Search Results from a Global Step Search
Ending a Global Step Search
Global Search Example
Building the POID for the Input Flist
Building POID for the Input Flist in C
Building POID for the Input Flist in Java
The Impact of Searches on Shared Memory Allocation
Improving Search Performance
Step Search Limits
Transaction Caching
14
Creating Custom Fields and Storable Classes
About Fields and Storable Classes
About Storable Class Editor
Starting Storable Class Editor
Creating, Editing, and Deleting Fields and Storable Classes
Modifying the pin.conf File to Enable Changes
Increasing the Size of the CM Cache for the Data Dictionary
Using DDL when Updating the Data Dictionary Tables
Creating Custom Fields
Creating Custom Storable Classes
Making Custom Fields Available to Your Applications
About BRM SDK Opcodes
Using BRM SDK Opcodes to Manage Storable Classes
Creating and Modifying Storable Classes
Retrieving Storable Class Specifications
Deleting Storable Class Specifications
Using BRM SDK Opcodes to Manage Field Specifications
Creating and Modifying Field Specifications
Retrieving Field Specifications
Deleting Field Specifications
Converting Storable Class Files from Previous Versions
Deploying Custom Fields and Storable Class Definitions
Extracting Field and Class Definitions with pin_deploy
Importing Class Definitions with pin_deploy
Adding Fields to /config Objects
Using Developer Center to Modify /config Objects
Using testnap to Modify /config Objects
15
Adding Support for a New Service
About BRM Services
About Supporting a New Service
Creating Storable Classes for Services and Events
Setting Up Rating for a New Service
Setting Up Price List Data for Real-Time Rating
Mapping Event Types to a New Service Storable Class
Defining RUMs for New Service Usage Events
Setting Up Provisioning Tags for a New Service
Defining Impact Categories for a New Service
Charging for a New Service Based on Custom Event Attributes
Defining Custom Resources for a New Service
Specifying How to Round Resources for New Service Usage Events
Adding a New Service to a Price List
Configuring Sub-Balances to Track Specific Types Of Usage for a New Service
Setting Up Price List Data for Pipeline Rating
Defining a New Service
Defining Usage Classes and Usage Types
Mapping Internal Codes to External Data
Defining a Pipeline Rate Plan
Configuring Pipeline Manager to Process Events for a New Service
Configuring Pipeline Manager Input Processing for New Service Usage Events
Configuring Pipeline Manager Service-Mapping Modules
Configuring a Pipeline Manager Output Stream for New Service Usage Events
Enabling Object Auditing for New Service Objects
Configuring Suspension and Recycling Of New Service Usage Events
Configuring the Real-Time Rerating Pipeline for Rerating Custom Events
Adding Database Partitions for New Service Usage Events
Loading Rated Events for a New Service into the Database
Loading Real-Time Rated Usage Events into the BRM Database
Loading Pipeline-Rated Usage Events into the BRM Database
Setting Up Billing for a New Service
Setting Up Bill Items for a New Service
Collecting Revenue Assurance Data for New Service Usage
Setting Up Account Creation for a New Service
Setting Up Business Profiles for a New Service
Optional Support for a New Service
Synchronizing Data for a New Service with External Applications
Mapping Devices to a New Service
Extending Customer Center to Display a New Service
Providing Access to a New Service on the Web
Generating Usage Reports for a New Service
16
Using BRM Messaging Services
About the UMS Framework
Setting Up Messaging by Using the UMS Framework
Enabling Messaging
Loading the Message Style Sheet
Creating and Loading Message Templates
Generating Messages in the Producer Application
Retrieving Message Templates
Retrieving Message Templates from /strings Objects
Creating Message Objects
Retrieving Message Objects in the Consumer Application
17
Integrating BRM with Enterprise Applications
About Integrating BRM with Enterprise Applications
How EAI Manager Publishes Events
About Installing EAI Manager
Software Requirements
Installing EAI Manager
Installing EAI Features on the Same Computer
Installing EAI Features on Separate Computers
Configuring Event Notification for EAI Manager
About BRM Business Events
About Publishing Additional Business Events
Setting Up Multiple Publishers and Events
Defining Business Events
Configuring Custom Business Events for Pipeline Discounting
Removing Events that You Do Not Want to Publish
Returning Identifiers from Enterprise Applications
Changing the Format of Published Events
Validating Your Changes to the Payload Configuration File
About the Payload Configuration File Syntax
Publisher Definitions
Event Definitions
Element Definitions
Syntax of Elements and Attributes
Source
Tag
StartEvent
EndEvent
DataFrom
UseOnlyElement
UseElementId
Attribute
DTD
PinFld
Field
ExtendedInfo
Search
SubElement
Event Flist, Event Definition, and XML Output Example
About Filtering which Business Events Are Published
About the Condition Attribute
About the Condition Definition
About Building a Connector Application
Configuring EAI Manager
Configuring the Connection Manager for EAI
Configuring the EAI DM
Configuring the Payload Generator EM
Specifying the Date and Time Format for Business Events
Defining Infinite Start Date and End Date Values
Configuring EAI Manager to Publish to an HTTP Port
AbortTransaction
CommitTransaction
FreeGlobalContext
GetGlobalContext
Initialize
OpenTransaction
PrepareCommit
PublishEvent
SetIdentifier
Shutdown
18
Using Events to Trigger Operations
About Using Events to Trigger Operations
About the Event Notification List
Implementing Event Notification
Enabling the Use of Regular Expressions in the Event Notification List
Merging Event Notification Lists
Editing the Event Notification List
Calling Multiple Opcodes with One Notification-Triggering Event
Using Event Notification to Trigger Custom Operations
Loading the Event Notification List
About Notification Events
19
Writing Custom Batch Handlers
About Batch Handlers
Configuration Parameters
What a Batch Handler Has to Do
Status
Activation
Handler Actions
20
Creating iScripts and iRules
About iScripts
About iRules
Creating Rule Sets via Description Files
Descriptions for Data from an ASCII File
Descriptions for Data from a Database Table
Importing and Exporting Validation Rules
About the Rule Set XML File
About the db2irules.pl Script
About the irules2db.pl Script
Updating a Rule Set
Supported iScript Data Types
Supported iScript Constants
Constants for Normalizing National Access Codes
Date Constants
Database Connection Constants
Decimal Constants
Decimal Rounding Constants
EDR Container Content Constants
EDR Container Characters Deletion Constants
EDR Input State Constants
EDR Internal State Constants
POID Constants
TAM Transaction Constants
Supported Regular Expressions
iScript Variable Declarations
iScript Arrays and Hashes
iScript Function Declarations
iScript Control Structures
iScript Function Blocks
Using iScript Switch Statements
Examples for Switch Statements
Including Other iScript Source Files in Your iScript
About iScript Functions
About Special iScript Functions
Pipeline-Related Function Hooks
EDR Processing-Related Function Hooks
Input Grammar-Related Function Hooks
Transaction-Manager Related Function Hooks
About iScript Flist Extension Functions
iScript External Modules
Improving Pipeline Performance in Custom iScripts and iRules
21
Managing Devices with BRM
About the Device Management Framework
Device Management Tasks
Creating Devices
Managing the Device Life Cycle
Changing Device Brands
Managing Device Attributes
Associating Devices and Services
Deleting Devices
Tracking Device History
Device Management and Brands
Device Management and Multischema Environments
Configuring Event Notification for Device Management
Defining the Device Life Cycle
Localizing Device State Names
Customizing Device State Changes
Defining Device-to-Service Associations
Creating Custom Device Management Systems
About the Device Management Opcodes
Creating /device Objects
Changing Device Attributes, Brands, and States
Changing the Attributes of /device Objects
Associating /devices and /brand Objects
Changing the State of a /device Object
Associating /service and /device Objects
Deleting /device Objects
22
Managing Orders
About the Order Management Framework
Order Management Tasks
Creating Orders
Processing Order Response Files
Managing the Order Life Cycle
Associating or Disassociating Orders with Master Orders
Managing Order Attributes
Deleting Orders
Tracking Order History
Managing the Order History Log
Installing the Order Management Framework
Installing the Order Management Framework
Uninstalling the Order Management Framework
Order Management and Brands
Order Management and Multischema Environments
About Defining the Order Life Cycle
Defining an Order Life Cycle
Creating Custom Order Management Systems
About the Order Management Opcodes
Creating /order Objects
Customizing Order Creation
Processing Order Response Files
Customizing Order Processing
Associating and Disassociating /order Objects
Customize How to Validate Association and Disassociation
Updating /order Objects
Changing /order Object Brand Associations
Setting the State in /order Objects
Changing /order Object Attributes
Deleting /order Objects
Customizing How to Delete Orders
23
Monitoring Your System with System Manager
About System Manager
Terminology
BRM Server States
Understanding the Node Manager
Client Connection to Node Manager
Node Manager Opcodes
Understanding System Manager
System Manager Command-Line Interface
Centralized Log Management
Installing System Manager and Node Manager
Configuring System Manager and Node Manager
Editing the Node Manager Configuration File
Editing the System Manager Configuration File
Getting the Status of the Servers on All Nodes
Part III Creating and Customizing Client Applications
24
Adding New Client Applications
About Adding New Client Applications
Ways to Add Custom Applications
Using Existing System Opcodes
Using Custom Opcodes
Using a Custom Data Manager (DM)
Using Transactions
Types of Transactions
Read-Only Transactions
Read-Write Transactions
Transaction with a Locked Storable Objects
Transaction with a Locked Default Balance Group
About Committing Transactions
About Cancelling Transactions
About the Transaction Base Opcodes
Customizing How to Open Transactions
Customizing the Verification Process for Committing a Transaction Opcode
Customizing How to Commit a Transaction
Customizing How to Cancel Transactions
Implementing Timeout for Requests in Your Application
Configuring Your Custom Application
Creating a Client Application in C
Compiling and Linking Your Programs
Guidelines for Developing Applications in C on UNIX Platforms
Using the Sample Applications
Sample Applications
Policy FM Source Files
Adding Branding to Your Application
The Brand as an Independent Virtual Workspace
Data Scoping
Pointing a Base Level Object to a Brand Account
Defining a Brand Account
Providing Access to Brands
Branding Access Permissions
Providing Access to Pricing Information
Read Access to Pricing Data
Write Access to Pricing Data
Billing Groups
Providing Billing Group Access with an Access Control List (ACL)
Managing Custom Applications
Creating Brands Programmatically
Writing Brand-Aware Applications
Displaying a List of User Authorized Brands
Setting the Current Connection Scope
About Adding Multischema Support to Your Applications
About Working with Multiple Schemas
Creating Accounts
Maintaining Transactional Integrity
Searching for Accounts across Database Schemas
Searching for a Single Account
Searching for Multiple Accounts (Global Search)
Finding How Many Database Schemas You Have with testnap
Bill Numbering
About Adding Virtual Column Support to Your Applications
25
Creating Client Applications by Using Java PCM
About Using the Java PCM API
Software Requirements
About the Java PCM API and the C API
Using the Java PCM API
About Creating Client Applications by Using the Java PCM API
About Synchronous and Asynchronous Modes
Actions Performed by BRM Java Client Applications
Opening a PCM connection
Using Custom Fields in Java Applications
Creating Custom Classes
Calling Custom Opcodes
Using Synchronous Mode for Opcode Processing
Getting a Text Format of an Flist
Handling Exceptions
Logging Errors and Messages
Specifying a Timeout Value for Requests
Using the Asynchronous PCP Mode in Java PCM Client Libraries
About PCPSelector
About PortalContextListener
How Asynchronous Mode for Opcode Processing Works
Creating Client Applications for Asynchronous Mode of Opcode Processing
Setting Global Options
Default Entries in the Infranet.properties File
Optional Entries in the Infranet.properties File
Example Infranet.properties File
Controlling Opcode Logging from a Client Application
Running the jnap Utility
Getting Help with jnap
Example of Using jnap
About the Sample Program
26
Creating Client Applications by Using Perl PCM
About the Perl API
Differences between the Perl API and the C API
Guidelines for Using the Pcmif Module
Performing PCM Operations
27
Creating Client Applications by Using PCM C++
About PCM C++
Skills Required
Installation
Comparison of the PCM C++ and PCM C APIs
Understanding PCM C++ Concepts
Passing Arguments
Using Arrays
Using Smart Pointers to Manage Memory
Construction and Destruction
Copying and Assignment
Using Field Value Ownership
Using PinBigDecimal
Field Value Ownership
Using PinBigDecimal with Flists
Using the toString() Method
Using the Divide Method
Using a Null Pointer
Handling Exceptions
Logging to pinlog
Accessing Configuration Values by Using pin.conf
Using PCM C++ with PCM C
Using the PCM C++ API
Opening a PCM Connection
Closing a PCM Connection
Creating Custom Fields
Creating an Flist
Getting an Flist in Text Format
Debugging PCM C++ Programs
Troubleshooting
28
Creating BRM Client Applications by Using the MTA Framework
About the BRM MTA Framework
BRM MTA Framework Layers
MTA Stages
MTA_CONFIG Execution Stage
MTA_INIT_APP Execution Stage
MTA_INIT_SEARCH Execution Stage
Search Execution
MTA_TUNE Execution Stage
Job Distribution
MTA_JOB_DONE Execution Stage
MTA_EXIT Execution Stage
MTA_WORKER_INIT Execution Stage
MTA_WORKER_JOB Execution Stage
Worker Thread Job Execution
MTA_WORKER_JOB_DONE Execution Stage
MTA_WORKER_EXIT Execution Stage
MTA Global Flist Structure
Using the BRM MTA Framework
What the MTA Framework Includes
MTA Callback Functions
MTA Helper Functions
MTA Policy Opcode Hooks
Creating a Multithreaded BRM Client Application
Searching Different Data Sources
Displaying Application Help Information
Error Notifications
Customizing BRM Multithreaded Client Applications
Implementing the MTA Policy Opcodes
Configuring the MTA Policy Opcodes
Configuring your Multithreaded Application
Applying Configuration Entries to Specific Utilities
Using Multithreaded Applications with Multiple Database Schemas
MTA Policy Opcode Hooks
MTA_CONFIG
Sample Input Flist
MTA_ERROR
Sample Input Flist
MTA_EXIT
Sample Input Flist
MTA_INIT_APP
Sample Input Flist
MTA_INIT_SEARCH
Sample Input Flist
MTA_JOB_DONE
Sample Input Flist
MTA_TUNE
Sample Input Flist
MTA_USAGE
Sample Input Flist
MTA_WORKER_EXIT
Sample Input Flist
MTA_WORKER_INIT
Sample Input Flist
MTA_WORKER_JOB
Sample Input Flist
MTA_WORKER_JOB_DONE
Sample Input Flist
MTA Callback and Helper Functions
pin_mta_config
pin_mta_exit
pin_mta_get_decimal_from_pinconf
pin_mta_get_int_from_pinconf
pin_mta_get_str_from_pinconf
pin_mta_global_flist_node_get_no_lock
pin_mta_global_flist_node_get_with_lock
pin_mta_global_flist_node_put
pin_mta_global_flist_node_release
pin_mta_global_flist_node_set
pin_mta_init_app
pin_mta_init_search
pin_mta_job_done
pin_mta_main_thread_pcm_context_get
pin_mta_post_config
pin_mta_post_exit
pin_mta_post_init_app
pin_mta_post_init_search
pin_mta_post_job_done
pin_mta_post_tune
pin_mta_post_usage
pin_mta_post_worker_exit
pin_mta_post_worker_init
pin_mta_post_worker_job
pin_mta_post_worker_job_done
pin_mta_tune
pin_mta_usage
pin_mta_worker_exit
pin_mta_worker_init
pin_mta_worker_job
pin_mta_worker_job_done
pin_mta_worker_opcode
29
Adding or Changing Login Options
About Customizing the Login Account for Your Application
Creating an Account for Your Application
Providing Login and Password to Your Custom Application
Configuring System Passwords
Creating Several admin_client Services with Different Permissions
Setting Up Customer Verification for Your Applications
Establishing Unique Service Logins
Appending a Domain Name to a Customer's Login ID
30
Creating Custom Search Templates for Event Browser
About Search Templates
About Custom Search Templates
Adding Custom Search Templates to Event Browser
Template Definition
Annotated Example Template
Browse Menu Definition
Default BRM Search Templates
Search Template Properties
Example Search Template File
Part IV Customizing Customer Center and Self-Care Manager
31
Using Customer Center SDK
About Customer Center SDK
About Using Customer Center SDK to Customize Customer Center
About Using Customer Center SDK to Customize Self-Care Manager
Contents of Customer Center SDK
Customer Care API Reference
Coding Your Customizations
About Compiling and Packaging Your Customizations
Coding, Building, and Deploying Customizations
Syntax for the buildAll Script
Syntax
File Location
Parameters
Testing Your Customizations for Customer Center
Understanding the BRM Business Application SDK Framework
The Model-View-Controller Architecture
How the Controllers Work
Example Data Flow between a Simple Field and BRM
About Field Components
Displaying Versus Saving Data in Fields
Display Fields and Controllers
About PModelHandle
About Lightweight Components (Self-Care Manager Only)
Source Code Examples
32
Customizing the Self-Care Manager Interface
About Customizing Self-Care Manager
Hardware and Software
About the BAS Architecture
Understanding Self-Care Manager Components
Self-Care Manager Components
About PInfranetServlet
Using PInfranetServlet to Process Requests
Example Data Flow Designs
Design 1
Design 2
Design 3
Extending the Functionality of Self-Care Manager
Adding Fields
Removing Fields
Creating a New Component
Creating a Link for the JSP Pages for a Get Request
Creating a Link for the JSP Pages for a Post Request
Designing a Component
Developing the Customizable Component
Developing a Noncustomizable Component
Error Handling
Using Branding in Your Custom Beans
Formatting Your Data
Method 1: Add Java Code to Your JSP Pages
Method 2: Use a Formatting Bean that Contains the Presentation Logic for the Data.
Building the Self-Care Manager Components
Self-Care Manager Customization Examples
33
Customizing the Customer Center Help System
About Customizing Customer Center Help
About Help for Service Integration Components
About Oracle Help for Java
About Types of Help Files
Installing Oracle Help for Java
Downloading and Installing Java
Downloading and Installing Oracle Help for Java
Customizing Help
About Tools for Customizing Help
Unpacking the Help Files
Creating or Modifying Help Topics
Working with Pop-Up Windows
Naming Files
Using the Style Sheet
Modifying the Map File
Modifying the Table of Contents
Modifying the Index
Testing the Help System
Creating the Search Database and JAR File
Deploying the Help System
Editing JNLP Files
Copying Customized Files to Customer Center
Working with Context-Sensitive Help
34
Customizing the Customer Center Interface
Customizing and Configuring Customer Center
Tools and Techniques for Customizing Customer Center
Customization Procedure Overview
Coding Your Customizations
Building and Deploying Your Customizations
Modifying the Customer Center Properties Files
About the Default Customer Center properties Files
Modifying Behaviors Defined by the Default Properties Files
Displaying Event Timestamps with Seconds Precision
Adding Inactive Product Status Indicators
Changing the List of Services Available in the Search Panel
Improving Account Search Performance
Changing Number Searches for GSM Services
Modifying the Shortcut Key Sequences
Specifying the Number of Bills Displayed in the Balances Tab
Suppressing the "Missing Login/ID" Message for Custom Service Panels
Changing the Maximum Number of Security Code Characters
Updating Notes Before Saving
Reminding CSRs to Customize Deals Before Completing a Purchase
Identifying Services by Device ID Rather than Login ID
Adding a Tax Exemption Type
Customizing Event Searches
Customizing the Case Sensitivity of Event Searches
Customizing the Selections for Service Type in Event Searches
Customizing the Selections for Service Status in Event Searches
Customizing the Selections for Device Type in Event Searches
Customizing Balance Group Searches
Customizing the Case Sensitivity of Balance Group Searches
Customizing the Selections for Service Type in Balance Group Searches
Customizing the Selections for Service Status in Balance Group Searches
Customizing the Selections for Device Type in Balance Group Searches
Customizing Product/Discount Searches
Customizing the Case Sensitivity of Product/Discount Searches
Customizing the Selections for Service Type in Product/Discount Searches
Customizing the Selections for Service Status in Product/Discount Searches
Customizing the Selections for Device Type in Product/Discount Searches
Customizing Service Searches
Customizing the Case Sensitivity of Service Searches
Customizing the Step Search Size
Customizing the Selections for Service Type in Service Searches
Customizing the Selections for Service Status in Service Searches
Customizing the Selections for Device Type in Service Searches
Hiding the Password Fields in Customer Center
Disabling the Child Amounts Check Box
Adding a Custom Service as a Login to Customer Center
Enabling Copy and Paste of Service ID for Read-Only Access
Using Customer Center SDK Scripts for Customer Center
Adding New Pages to the Customer Center Interface
About Portal Infranet Aware Widgets
Adding Account Maintenance Pages
Overview of Account Maintenance Components
Saving Changes
Refreshing Data in the UI
Currency Toggling
Drill-Down Links
Advanced Drill-Down Techniques
Modifying the Customer Center Permissions
Adding Your Page to the Customer Center Toolbar
Adding New Account Wizard Pages
Understanding the New Accounts Wizard
Base Classes for Account Creation Pages
Methods Used in New Account Creation Pages
Removing a Payment Method from Customer Center
Advanced Customer Center Concepts
Components Used in Customer Center
Portal Infranet-Aware Components
Graphical Components
Nongraphical Components
Data Manager Components
About the BAS Data Flow with a Swing-Compatible UI
About Field Specifications
About Controller Processing
Building Your Customer Center Customizations
Creating a Self-Signed Java Security Certificate
Modifying the signjar Script
Building Your Customization Files
Requirements
Using the buildAll Script
Testing Your Customizations
Deploying Your Customer Center Customizations
Deploying Customer Center Customizations on UNIX
About the Customer Center Properties Files
Default Properties Files
Configurator Properties Files
Customized Properties Files
Other Properties Files
Deploying Customer Center Customizations on Windows
Customer Center Customization Examples
35
Using Configurator to Configure Customer Center
About Configurator
Using Configurator
What's Next?
Configuring Customer Center Account Maintenance Pages
Using the Account Maintenance Configurator Tabs
Summary Configurator
Modifying the Customer Type List
Contacts Configurator
Balance Configurator
Payment Configurator
Plan Configurator
Service Configurator
Hierarchy Configurator
Sponsorship Configurator
Sharing Configurator
Other Settings
Account Search Results Configurator
Starting Account Search Configurator
Adding a New Search Criteria field
Modifying a Search Criteria Field
Deleting a Custom Search Criteria Field
Tab Options
Reordering Pages
Modifying Attributes of an Existing Page
Hiding an Existing Page
Adding a New Page
Removing a Custom Page
Configuring the Customer Center New Accounts Wizard
Contacts Panel
General Panel
Payment Panel
Billing Panel
New Account Page Options
Reordering New Account Pages
Modifying an Existing Page
Hiding an Existing Page
Adding a New Page
Removing a Custom Page
Using the Configurator Resource String Editor
Starting the Resource String Editor
Searching for Labels to Replace
Resource String Editor String Search Rules
Replacing Labels with New Strings
Undoing Label Changes
Additional Configured Profile Panel Examples
36
Adding Custom Fields to Customer Center
Coding and Deploying Custom Fields for Customer Center
Adding Custom Fields to Infranet.properties
Generating Your Custom Field Java Source Code
Compiling and Signing Your Custom Fields Java Source Code
What's Next
Configuring JBuilder to Add Custom Fields to Customer Center
What's Next
Building and Deploying Your New Profile Panel
37
Setting Up JBuilder to Customize the Customer Center Interface
About Using JBuilder to Customize the Customer Center Interface
Adding PIA Widgets to the JBuilder Palette
Creating a JBuilder Project for Customer Center SDK
38
Creating a New Customer Center Profile Panel
Creating a New Profile Panel
What's Next
39
Creating a New Customer Center Service Panel
Creating a New Service Panel
Correcting Field Alignment
What's Next
40
Sample Customer Center Customizations
Building and Deploying Customizations
Customizing Contact Fields
Customizing Contact Fields
Adding Drop-Down Lists to the Contact Type and Salutation Fields
Populating Drop-Down List Values from a Properties File
Adding Drop-Down Lists to Address Panel Fields
Adding and Removing Item Listeners to Address Field Drop-Down Lists
Modifying Multiple Contact Behavior
Specifying the Contact Type for Each Consecutive Contact
Disabling Changes to the Contact Type for the First Contact
Configuring Duplicate Checking for the Contact Type Field
Using Custom Address Panel and Contact Page
Replacing the Address Panel with a Custom Panel
Replacing the Contact Page with a Custom Page
Customizing Fields in the Balance Tab
Setting the Correct JRadioButtonMenuItem Button
Customizing Fields in the Payments Tab
Disabling the Billing Cycle & Tax Setup Link in the Payments tab
Configuring Values in the Billing Day of Month Combo Box
Setting the Next Billing Cycle Field to Visible or Not Visible
Customizing the Expiration Date Fields in the Credit Card Panel
Creating a Custom Payment Method
Customizing Fields in the Services Tab
Adding Charges for SIM and MSISDN Changes
Adding a Secondary MSISDN for Supplementary Services
Customizing Fields in the Hierarchy Tab
Adding a Custom Popup Component to the No Hierarchy Page
Adding a Custom NoHierarchy Page
Creating Customized Search Dialogs and Disabling the To Field
Adding Custom Options to the Actions Drop-Down Lists
Customizing Fields in the Sharing Tab
Adding a New Sharing Type to the View Drop-Down List
Configuring Dynamic Drop-Down Lists
Part V Localizing BRM
41
Using BRM in International Markets
Supporting Multiple Currencies
Accepting Credit Card Payments in Multiple Currencies
Supporting Multiple Languages
Using Localized Client Applications
Localizing BRM
About BRM Reports
42
BRM Internationalization and Localization
About Localizing and Internationalizing
About Internationalization of BRM Client Applications
Writing Localized MFC Client Applications
About Internationalized Development on BRM
About Canonicalization
43
Creating a Localized Version of BRM
About the Localization SDK
Localization SDK Contents
Java Client Applications
Payment Tool
Self-Care Manager Server Application
BRM Server Files
Localizations Supported
System Requirements for the Localization SDK
Unpacking Help Files for Java Applications
Translating the Clients
Localizing Help for Payment Tool
Building the Clients
Building Java Applications
Building Properties Files
Building Help for Java Applications
Preparing Customer Center
Building Payment Tool
Testing Payment Tool
Packaging Your BRM Client Localizations
Modifying Localized Versions of Customer Center
About Simple Customization
About Advanced Customization
Before You Begin
Simple Customization for Localized Versions of Customer Center
Deploying a Simple Customization of Customer Center
Advanced Customization for Localized Versions of Customer Center
Deploying an Advanced Customization of Customer Center
When to Use the Localization SDK for Advanced Customization
Localizing Self-Care Manager
Translating the Self-Care Manager Localized Strings File
Creating a Localized Self-Care Manager Installation for UNIX
Localizing Object Initialization Files
Adding the New Locale to the Object Initialization Files
Localizing and Customizing Strings
Creating New Strings and Customizing Existing Strings
Localizing Existing Strings
Loading Localized or Customized Strings
Localizing BRM Reports
About Customizing Server Software
Setting the Default Language for Customer Accounts
Customizing Canonicalization
Exporting Data to an LDAP Server
Locale Names
44
Handling Non-ASCII Code on the BRM Server
About Character-Encoding Conversion
About Converting Multibyte or Unicode to and from UTF8
Direct Conversion Macros
Supporting Functions and Macros
Universal Macros
PIN_CONVERT_MBCS_TO_UTF8
PIN_CONVERT_STR_TO_UTF8
PIN_CONVERT_UNICODE_TO_UTF8
PIN_CONVERT_UTF8_TO_MBCS
PIN_CONVERT_UTF8_TO_STR
PIN_CONVERT_UTF8_TO_UNICODE
pin_IsValidUtf8
PIN_MBSLEN
PIN_SETLOCALE
Conversion Code Example
Part VI Programming Utilities
45
Developer Utilities
load_config
load_config_provisioning_tags
load_localized_strings
load_pin_config_business_type
load_pin_device_permit_map
load_pin_device_state
load_pin_excluded_logins
load_pin_order_state
load_pin_rtp_trim_flist
parse_custom_ops_fields
pin_adu_validate
pin_bus_params
pin_cfg_bpdump
pin_crypt_app
pin_crypt_upgrade
pin_deploy
pin_uei_deploy
pin_virtual_time
testnap
Scripting on this page enhances content navigation, but does not change the content in any way.