15 Working with Profile Sharing Groups

This chapter describes how to create and use profile sharing groups in your Oracle Communications Billing and Revenue Management (BRM) system.

To use this documentation, you should be familiar with extended rating attributes (ERAs). See "About Extended Rating Attributes" in BRM Configuring and Running Billing.

About Profile Sharing Groups

A profile sharing group enables an account or an account's service to share a profile with other accounts or services. A profile stores ERAs or other types of information about an account.

The group owner can be an account or a service. If an account is the owner, profiles from all the services owned by the account are available for sharing. If a specific service is the owner, only profiles of that service are available for sharing.

Important:

Only service-level profiles can be shared. Account-level profiles cannot be shared, even if the profile sharing group is owned by an account.

Profile sharing can be used to share an ERA, such as a friends and family list, to make it available to multiple accounts or services. For example, a friends and family list can be set up for a GSM service owned by one account and then shared so that a GSM service belonging to other accounts can use the same list, as shown in Figure 15-1:

Figure 15-1 Profile Sharing Group

Description of Figure 15-1 follows
Description of ''Figure 15-1 Profile Sharing Group ''

With this feature, you do not need to set up the same friends and family list or other ERA values separately for different accounts: they're shared automatically.

Profile sharing groups can also be used to share custom profiles you create.

You can set up profile sharing groups in two ways:

For guidelines that apply to both creation methods, see "Creating Profile Sharing Groups".

Note:

Profile sharing groups work similarly to charge and discount sharing groups, but profile sharing groups do not share resources and are not prioritized.

About Profile Sharing Group Membership

Only service-level profiles can be shared, but a profile sharing group's members can be accounts or services, as follows:

  • Account: If an account is a member, any eligible event generated by the account can use a shared profile.

  • Service type: When you specify a service type (for example, GSM) as a member, the events generated by all service instances within that service type are considered for shared profiles.

    You can also specify that a member account that has not yet purchased a service of that type is automatically eligible for participation in profile sharing if it buys the service in the future.

    Note:

    The subtypes of the service type you specify do not become members. For example, if you specify the GSM service type as a member, specific GSM service instances such as GSM fax, GSM telephony, and so forth, do not.
  • Service instance: When you specify a service instance (for example, a specific phone) as a member, only the events generated by that instance are eligible for the shared profiles. Specify membership using a specific service instance if you want to exclude other services of that type from profile sharing.

    For example, if an account includes both work phone service and personal phone service, a friends and family ERA might apply only to the personal phone.

Profile sharing group members should be equivalent to the owner. If the owner is a service, then the members should be the same service type. If the owner is an account, then the members should also be accounts.

Members do not need to have the same products or discounts as the owners. But to make use of a shared profile, members need a product or discount configured to use an ERA type or ERA label in the shared profile to give special rates or discounts.

By default, BRM does not validate profile sharing group members. You can customize the PCM_OP_SUBSCRIPTION_POL_PREP_MEMBERS policy opcode to add validation for profile sharing groups. See "Validating Profile Sharing Group Members".

How Account Status Changes Affect Profile Sharing Groups

When the status of a profile sharing group's owner account is changed to inactive or closed, the shared profiles are no longer available to group members. During rating, the shared profiles are not retrieved.

If an inactive owner account is activated, the shared profiles are once again available during rating.

How Group Owner Changes Affect Profile Sharing Groups

If you use a third-party client application, you can customize the application to allow a customer service representative (CSR) to change the owner of a profile sharing group. For more information on how to implement this, see "Changing the Owner of a Profile Sharing Group through a Customized Client Application".

Note:

Customer Center does not support changing group owners.

When the owner of a profile sharing group changes, the profiles shared by the previous owner are deleted from the group and the profiles shared by the new owner are added.

Creating Profile Sharing Groups

To create a profile sharing group, you specify a group owner account or service, member accounts or services, and the list of the group owner's profiles that will be shared by the members.

You create profile sharing groups as follows:

The following guidelines apply when creating a profile sharing group:

  • The owner cannot be a member of its own group.

  • The owner of a profile sharing group cannot also belong to a member-owned group. For example, if Account1 and Account2 both own profile sharing groups, and Account2 is a member of Account1's group, then Account1 cannot belong to Account2's group.

  • If you add a service type as a member rather than a specific service instance, all instances of that service type become members. However, the subtypes of the service type do not become members.

    For example, if you specify the GSM service type as a member, all instances of GSM become members, but GSM fax, GSM telephony, and so forth do not.

Creating a Profile Sharing Group through a Customized Client Application

For general information about profile sharing groups, see "About Profile Sharing Groups".

To customize a third-party application to create a profile sharing group, use the PCM_OP_SUBSCRIPTION_SHARING_GROUP_CREATE opcode.

The profile sharing group has either a service or an account as the owner and a list of member services or accounts. It also contains one or more /profile objects owned by the group owner that will be shared with group members.

This opcode creates the group object and then adds the members and profiles:

  1. Creates a /group/sharing/profiles object and assigns the group owner.

  2. Adds the /account and /service objects in the PIN_FLD_MEMBERS array to the MEMBERS array of the /group/sharing/profiles object. Each PIN_FLD_MEMBERS array element specifies an /account object and a /service object. If the /service object is NULL, the /account object is the member.

    If the PIN_FLD_SERVICE_OBJ field for a member specifies a type-only service, such as GSM, instead of a specific service instance, all instances of that service type become members of the profile sharing group. However, subclass instances of the service type do not become members.

    If you specify a service type as a member, the member account does not need to own the service when the /group/sharing/profiles object is created. The member account can join the group and purchase the service later. See "About Profile Sharing Group Membership".

  3. Validates that the group owner does not belong to a profile sharing group owned by one of the members.

  4. Calls the PCM_OP_SUBSCRIPTION_POL_PREP_MEMBERS policy opcode to validate the members. By default, this opcode has no validation rules for profile sharing group members, but you can customize it to validate members. See "Validating Profile Sharing Group Members".

    Note:

    PCM_OP_SUBSCRIPTION_SHARING_GROUP_CREATE does not validate that the primary currency of members matches the parent.
  5. Adds the /profile objects in the PIN_FLD_PROFILES array to the PROFILES array of the /group/sharing/profiles object.

    The profiles must be owned by the profile sharing group owner and must have a current validity period.

    If the PIN_FLD_PROFILES array is empty, the profiles list will be empty. Duplicate entries are ignored.

If successful, PCM_OP_SUBSCRIPTION_SHARING_GROUP_CREATE returns the Portal object ID (POID) of the profile sharing group object created and the POID of the event generated to record the creation.

When the profile sharing group is created, the group is automatically added to each member's ordered balance group. See "Adding a Profile Group to a Member's Ordered Balance Group".

PCM_OP_SUBSCRIPTION_SHARING_GROUP_CREATE fails if the owner is a member of a sharing group owned by one of the members.

Adding a Profile Group to a Member's Ordered Balance Group

The /ordered_balgrp object stores the list of sharing groups to which an account or service belongs. This object is used with all types of sharing groups, but its significance varies:

  • For discount and charge sharing groups, /ordered_balgrp controls the order in which the group's resource balances are impacted by events. See "How Discounts and Charges Are Applied" in BRM Managing Accounts Receivable.

  • For profile sharing groups and balance monitor groups, the order is not significant, so they are added to the end of the list in the PIN_FLD_ORDERED_BALGROUPS array. The balance monitor groups are listed before the profile sharing groups.

When a profile sharing group is created or modified, the PCM_OP_SUBSCRIPTION_POL_AUTO_SUBSCRIBE_MEMBERS policy opcode automatically adds the group to the /ordered_balgrp object of each account or service that is a member.

Validating Profile Sharing Group Members

To validate the members of a profile sharing group, customize and call the PCM_OP_SUBSCRIPTION_POL_PREP_MEMBERS policy opcode. By default, this opcode validates only members of monitor groups.

You can customize this policy opcode to implement your validation rules. For example, the opcode can make sure that a member's service type is the same as the owner's service type.

If customized for profile sharing groups, this opcode validates members before they are added or modified and returns a list of valid members to the calling opcode.

Modifying Profile Sharing Groups

You can modify profile sharing groups through Customer Center or by customizing a third-party application. You can modify a profile sharing group in the following ways:

  • Add members to the group: When a member is added to the group, shared profiles become available to events generated by that member.

  • Add shared profiles: When profiles are added to a profile sharing group, the profiles automatically are available to group members. The added profiles must be owned by the group owner and have valid dates.

  • Delete members from the group: When a member is deleted from the group, the group owner's profiles are no longer considered in rating or discounting the former member's events.

  • Delete shared profiles: A deleted shared profile is removed from the group's profiles list and is no longer available to members.

  • Change the owner of the profile sharing group: When the owner of a profile sharing group changes, members use the new owner's shared profiles instead of the old owner's shared profiles.

    Note:

    You cannot change the owner of a profile sharing group in Customer Center.

To modify profile sharing groups by customizing a third-party application, see the following:

Modifying a Profile Sharing Group through a Customized Client Application

To modify a profile sharing group, use the PCM_OP_SUBSCRIPTION_SHARING_GROUP_MODIFY opcode. This opcode performs one of the following modifications, depending on the input POID:

  • Adds member accounts or services to an existing group.

  • Adds profiles to an existing group.

If successful, PCM_OP_SUBSCRIPTION_SHARING_GROUP_MODIFY returns the POID of the group that was modified and the POIDs of the events that were generated to record the group modification.

PCM_OP_SUBSCRIPTION_SHARING_GROUP_MODIFY fails in the following cases:

  • If the owner is a member of its own group or a group owned by a group member.

  • If a profile object in the input flist is not valid.

For more information, see:

Adding Members to a Profile Sharing Group through a Customized Client Application

To add members to a profile sharing group, use PCM_OP_SUBSCRIPTION_SHARING_GROUP_MODIFY.

Important:

The element ID for each member in the input flist must be unique within the membership. If an element ID is already being used by an existing member in the group object you are modifying, the opcode overwrites the existing member.

To make sure that you do not assign a new member to an existing member's ID, include all the existing members in the input flist. In this case, the opcode will make sure that all new members are added, even if a new member's element ID is the same as an existing member's ID.

This opcode handles duplicate members, so including existing members in the input flist does not cause problems.

PCM_OP_SUBSCRIPTION_SHARING_GROUP_MODIFY does the following:

  1. Adds the /account and /service objects in the PIN_FLD_MEMBERS array to the MEMBERS array of the /group/sharing/profiles object.

    Each PIN_FLD_MEMBERS array element specifies an /account object and a /service object. If the /service object is NULL, the /account object is the member.

    Note:

    • The guidelines for creating a profile sharing group also apply to adding members to an existing group. See "Creating Profile Sharing Groups".

    • If you specify a service type as a member, the member account does not need to own the service when the /group/sharing/profiles object is modified. The member account can join the group and purchase the service later.

  2. Validates that the group owner does not belong to a profile sharing group owned by one of the members.

  3. Calls the PCM_OP_SUBSCRIPTION_POL_PREP_MEMBERS policy opcode to validate the members. By default, this opcode has no validation rules for profile sharing group members, but you can customize it to validate members. See "Validating Profile Sharing Group Members".

  4. Creates an flist that includes the list of members to be added to the sharing group.

  5. Generates an /event/group/sharing/profiles/modify event to record the changes.

Adding a member to a profile sharing group triggers the PCM_OP_SUBSCRIPTION_POL_AUTO_SUBSCRIBE_MEMBERS policy opcode, which adds the profile sharing group to the ordered balance group for each member. See "Adding a Profile Group to a Member's Ordered Balance Group".

Adding Profiles to a Profile Sharing Group through a Customized Client Application

When adding profiles to a profile sharing group, PCM_OP_SUBSCRIPTION_SHARING_GROUP_MODIFY does the following:

  1. Adds the /profile objects in the PIN_FLD_PROFILES array to the PROFILES array of the /group/sharing/profiles object.

  2. Validates that the new group name is not a duplicate of an existing group name.

  3. Creates an flist that includes the list of profiles to be added to the sharing group.

  4. Generates an /event/group/sharing/profiles/modify event to record the changes.

Deleting Members and Profiles from a Profile Sharing Group through a Customized Client Application

Caution:

The element ID for each member in the /group/sharing/profiles object is unique. If you use an incorrect element ID for the member you want to delete, the opcode deletes the wrong member.

To delete a member or profile from a profile sharing group, your application calls PCM_OP_SUBSCRIPTION_SHARING_GROUP_MODIFY to list the members or profiles to be deleted. This opcode passes an empty array with an element ID for each listed object to be deleted.

Note:

If the array passed by the opcode is not empty, you are either adding or modifying the member or profile.

PCM_OP_SUBSCRIPTION_SHARING_GROUP_MODIFY then calls the PCM_OP_SUBSCRIPTION_SHARING_GROUP_DELETE opcode.

To delete a profile sharing group member, PCM_OP_SUBSCRIPTION_SHARING_GROUP_DELETE does the following:

  1. Calls the PCM_OP_SUBSCRIPTION_ORDERED_BALGRP opcode to delete the group/sharing/profiles object from the member's /ordered_balgrp object.

    For more information, see "Adding a Profile Group to a Member's Ordered Balance Group".

  2. Deletes the member from the /group/sharing/profiles members array.

  3. Generates an /event/group/sharing/profiles/delete event.

To delete a shared profile from the profile sharing group, PCM_OP_SUBSCRIPTION_SHARING_GROUP_DELETE does the following:

  1. Deletes the /profile objects specified in the PIN_FLD_PROFILES array from the PROFILES array of the /group/sharing/profiles object.

  2. Generates an /event/group/sharing/profiles/delete event to record the deletion.

If successful, PCM_OP_SUBSCRIPTION_SHARING_GROUP_DELETE returns the POID of the profile sharing group object that was modified and the POID of the event that was generated.

Changing the Owner of a Profile Sharing Group through a Customized Client Application

To change the owner of an existing profile sharing group, use the PCM_OP_SUBSCRIPTION_SHARING_GROUP_SET_PARENT opcode. You cannot change the group owner in Customer Center.

This opcode takes the following fields as input:

  • PIN_FLD_GROUP_OBJ: The profile sharing group (/group/sharing/profiles) whose owner is being changed.

  • PIN_FLD_POID: The /account object of the current owner.

  • PIN_FLD_PARENT: The new owner. This field identifies the /service object designated as the new owner of the profile sharing group. The /service object can be in the account that currently owns the profile sharing group or it can be in a different account.

  • PIN_FLD_ACCOUNT_OBJ: The /account object of the new owner.

    Note:

    If you are changing the ownership of the profile sharing group from one service to another within the same account, the object passed in this field matches the one in the PIN_FLD_POID field.
  • PIN_FLD_BAL_GRP_OBJ: The balance group used to track sharing activities for the new owner.

  • PIN_FLD_PROFILES: An array of profiles that the new owner will share with the group members. This field is optional but should be included if the shared profiles for the new owning service are different than those for the current owning service.

PCM_OP_SUBSCRIPTION_SHARING_GROUP_SET_PARENT does the following:

  1. Verifies that:

    • The input flist contains the /balance_group object and /account object for the new profile sharing group owner.

    • The /balance_group object belongs to the new owning account or service.

    • There are no cyclical relationships. For example, the owner cannot be a member of its own group. Also, if a member of the group owns a profile sharing group, the owner cannot be a member of that group.

  2. Deletes the current owner's profiles from the /group/sharing/profiles object.

  3. Adds the list of profile instances of the new parent passed in the input flist to the group object.

  4. Sets the /group/sharing/profile object's owner to the new owner specified in the PIN_FLD_PARENT input field.

  5. Adds the new owner's shared profiles to the /group/sharing/profiles object.

  6. Generates an /event/group/sharing/profiles/modify event to record the owner change.

If successful, this opcode returns the POID of the profile sharing group that was modified and the event that was generated to record the owner change.

This opcode fails if the new owner that is passed is already a member of the profile sharing group.

Deleting Profile Sharing Groups

A profile sharing group is deleted when the group owner's account is closed or the sharing group is deleted by a CSR. When a profile sharing group is deleted, members can no longer use the profiles that had been shared by the owner.

When a profile sharing group is deleted, BRM also deletes the profile sharing group from each member's ordered balance group. For more information on ordered balance groups, see "Adding a Profile Group to a Member's Ordered Balance Group".

You delete profile sharing groups as follows:

To delete members or profiles from a group, see "Modifying Profile Sharing Groups".

Deleting a Profile Sharing Group through a Customized Client Application

To delete a profile sharing group, use the PCM_OP_SUBSCRIPTION_SHARING_GROUP_DELETE opcode.

If the member and profiles arrays are empty in the input flist, the opcode assumes you are deleting the group.

PCM_OP_SUBSCRIPTION_SHARING_GROUP_DELETE does the following:

  1. Calls the PCM_OP_SUBSCRIPTION_ORDERED_BALGRP opcode to delete the group/sharing/profiles object from each member's /ordered_balgrp object.

  2. Deletes the group/sharing/profiles object.

  3. Generates an /event/group/sharing/profiles/delete event to record the deletion.