Table of Contents
- Title and Copyright Information
- Preface
-
Part I Introduction to Customizing BRM
- 1 About Customizing BRM
-
2
Implementation Defaults
- Defaults for Offering Packages and Bundles to Customers
- Defaults for Creating Customer Accounts
- Defaults for Login Names and Passwords
- Defaults for Validating Customer Account Creation 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
-
4
Understanding Storable Classes
- About Storable Classes and Objects
- Reading Objects
- Creating Objects
- Writing Fields in Objects
- Incrementing Fields in Objects
- Deleting Objects
- Deleting Fields in Objects
- Managing a Large Number of Objects
- Improving Performance when Working with Objects
- Locking Specific Objects
- Disabling Granular Object Locking
- 5 Understanding the PCM API
- 6 Accessing Configuration Files and Objects in Custom Code
- 7 Understanding the BRM Data Types
- 8 Using BRM SDK
- 9 Finding Errors in Your Code
- 10 Testing Custom Applications
- 11 Using the testnap Utility to Test BRM
-
Part II Customizing BRM Server Components
- 12 About System and Policy Opcodes
-
13
Writing a Custom Facilities Module
- 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 Nonbase 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
- Handling Transactions in Custom FMs
- Managing Memory in Custom FMs
- Opening a New Context in an FM
- Compiling and Linking a Custom FM
- Configuring Your New Policy FM
- Debugging FMs
- 14 Writing a Custom Data Manager
-
15
Creating Custom Fields and Storable Classes
- Creating, Editing, and Deleting Fields and Storable Classes
- About BRM SDK Opcodes
- Converting Storable Class Files from Previous Versions
- Deploying Custom Fields and Storable Class Definitions
- Adding Fields to /config Objects
- 16 Storing Customer Profile Information
- 17 Auditing Customer Data
-
18
Encrypting Data
- About Encrypting Data
- About AES Encryption
- About Masking Data in Log Files
- Encrypting Fields
- Defining Masked Fields
- About Encrypting Passwords
- Generating a Root Encryption Key
- Configuring the Data Manager for AES Encryption
- Configuring the Data Manager for Oracle ZT PKI Encryption
- Generating a Root Encryption Key
- Modifying a Root Encryption Key
-
19
Searching for Objects in the BRM Database
- About Searching for Objects
- About the Search Input Flist
- Search Query Syntax
- Searching Subclasses
- Returning Specific Storable Classes
- Returning Entire Arrays
- Search Template Examples
- About Single-Schema Searches
- Performing Exact Searches
- Complex Searches
- About Performing Distinct Searches with Ordering and Pagination
- Search without POID
- About Multischema (Global) Searches
- The Impact of Searches on Shared Memory Allocation
- Improving Search Performance
-
20
Adding Support for a New Service
- About Adding Support for a New Service
- About BRM Services
- Creating Service and Event Storable Classes
-
Setting Up Rating for a New Service
-
Setting Up Pricing Data for Online 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
- Defining Custom Balance Elements for a New Service
- Specifying How to Round Balance Impacts for New Service Usage Events
- Adding a New Service to Your Product Offerings
- Configuring Sub-Balances to Track Specific Types of Usage for a New Service
- Adding Database Partitions for New Service Usage Events
- Loading Rated Events for a New Service into the Database
-
Setting Up Pricing Data for Online Rating
- Setting Up Billing for a New Service
- Setting Up Account Creation for a New Service
- Optional Support for a New Service
- 21 Using BRM Messaging Services
-
22
Using BRM with Oracle Application Integration Architecture
- About Oracle Application Integration Architecture
- Installing and Configuring the Required BRM Components
- Integrating BRM Features with External CRM Applications
- Integrating BRM Features with External CRM Applications in a Multischema System
- Creating Charge Offers and Discount Offers for an External CRM
- Creating Charge Offers with Different Prices for Multiple Price Lists
- Validating Customer Contact Information
- 23 Using Event Notification
- 24 Writing Custom Batch Handlers
- 25 Managing Devices with BRM
-
26
Managing Orders
- About Order Manager
- Implementing Order Manager
- Installing Order Manager
- Order Management and Multischema Environments
- About Defining the Order Life Cycle
- Creating Custom Order Management Systems
- About the Order Management Opcodes
-
Part III Integrating BRM with Enterprise Applications
- 27 About Enterprise Application Integration (EAI) Manager
- 28 Installing EAI Manager
- 29 Payload Configuration File Syntax
- 30 Filtering which Business Events Are Published
- 31 Building a Connector Application
- 32 Configuring EAI Manager
-
33
Configuring Business Events
- About BRM Business Events
- About Publishing Additional Business Events
- Setting Up Multiple Publishers and Events
- Defining Business Events
- 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
- 34 EAI DM Functions
-
Part IV Integrating BRM with an Apache Kafka
Server
- 35 About Integrating BRM with an Apache Kafka Server
-
36
Configuring BRM to Publish
Notifications to Kafka Servers
- Overview of BRM Configuration Tasks for Kafka Servers
- Installing the BRM Kafka DM
- Configuring Thread Pooling for the Kafka DM
- Enabling SSL between Kafka DM and Kafka Server
- Configuring Event Notification for Kafka Servers
- Defining Business Events for Your Kafka Server
- Mapping Business Events to Kafka Topics
- Configuring the Dynamic Key Value
- Configuring Where to Record Failed Events
- Customizing Notification Enrichment
-
Part V Creating and Customizing Client Applications
- 37 Adding New Client Applications
- 38 Using Transactions in Your Client Application
- 39 Adding or Changing Login Options
- 40 Creating Applications that Run on Multischema Systems
-
41
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
- Creating a Multithreaded BRM Client Application
- Customizing BRM Multithreaded Client Applications
- Configuring your Multithreaded Application
- Using Multithreaded Applications with Multiple Database Schemas
- MTA Policy Opcode Hooks
-
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
-
About the BRM MTA Framework
-
42
Creating Client Applications by Using Java PCM
- About Using the Java PCM API
- Using the Java PCM API
- About Creating Client Applications by Using the Java PCM API
- Specifying a Timeout Value for Requests
- Using the Asynchronous PCP Mode in Java PCM Client Libraries
- Setting Global Options
- Running the jnap Utility
- About the Sample Program
- 43 Creating Client Applications by Using Perl PCM
-
44
Creating Client Applications by Using PCM C++
- About PCM C++
- Understanding PCM C++ Concepts
- Using the PCM C++ API
- Debugging PCM C++ Programs
- Troubleshooting
-
Part VI Customizing Customer Center and Self-Care
Manager
- 45 Using Customer Center SDK
-
46
Customizing the Self-Care Manager Interface
- About Customizing Self-Care Manager
- Understanding Self-Care Manager Components
-
Extending the Functionality of Self-Care Manager
- Adding Fields
- Removing Fields
- Creating a New Component
- Formatting Your Data
- Building the Self-Care Manager Components
- Self-Care Manager Customization Examples
-
47
Customizing the Customer Center
Interface
- Customizing and Configuring Customer Center
-
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 Balance Group Searches
- Customizing Product/Discount Searches
- Customizing 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
- Using Customer Center SDK Scripts for Customer Center
- Adding New Pages to the Customer Center Interface
- Advanced Customer Center Concepts
- Building Your Customer Center Customizations
- Deploying Your Customer Center Customizations
- About the Customer Center Properties Files
- Customer Center Customization Examples
-
48
Using Configurator to Configure Customer Center
- About Configurator
- Using Configurator
- Configuring Customer Center Account Maintenance Pages
- Configuring the Customer Center New Accounts Wizard
- Using the Configurator Resource String Editor
- Additional Configured Profile Panel Examples
-
49
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
- Configuring JBuilder to Add Custom Fields to Customer Center
- Building and Deploying Your New Profile Panel
- 50 Setting Up JBuilder to Customize the Customer Center Interface
- 51 Creating a New Customer Center Service Panel
- 52 Creating a New Customer Center Profile Panel
-
53
Sample Customer Center Customizations
- Building and Deploying Customizations
- Customizing Contact Fields
- Customizing Fields in the Balance Tab
- Customizing Fields in the Payments Tab
- Customizing Fields in the Services Tab
- Customizing Fields in the Hierarchy Tab
- Customizing Fields in the Sharing Tab
- Configuring Dynamic Drop-Down Lists
-
Part VII Localizing BRM
- 54 Using BRM in International Markets
- 55 BRM Internationalization and Localization
-
56
Creating a Localized Version of BRM
- About the Localization SDK
- System Requirements for the Localization SDK
- Translating the Clients
- Building the Clients
- Packaging Your BRM Client Localizations
- Modifying Localized Versions of Customer Center
- Localizing Self-Care Manager
- Localizing Object Initialization Files
- Localizing and Customizing Strings
- Localizing BRM Reports
- About Customizing Server Software
- Locale Names
- 57 Handling Non-ASCII Code on the BRM Server
-
Part VIII Programming Utilities
-
58
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
- parse_custom_ops_fields
- pin_adu_validate
- pin_bus_params
- pin_cfg_bpdump
- pin_crypt_app
- pin_deploy
- pin_uei_deploy
- pin_virtual_time
- testnap
- pin_config_editor
-
58
Developer Utilities