Create a Provisioning Provider Plugin
This section describes how a provisioning provider plugin can be created.
What does this section cover?
Create a provisioning provider plugin
In order to create a provisioning provider plugin, you need to:
- Define the provider in provisioning providers metadata file.
- Create a process class extending com.crm.process.provisioning.CRMProcessProvisioningProviderBean.
- Create a data entry view class and a java class implementing com.crm.process.provisioning.CustomProvisioningAction for each of the provisioning provider related processes.
- Set up the provider through the provisioning providers page.
For this example we assume that the provisioning provider is Example.
1. Provisioning Providers Metadata File
The new provider must be defined in provisioningproviders.xml file which is located under <custom_project>/src/main/resources/metadata/ directory.
The provider definition must consist of the following:
- the provproviderprotocol, which is the protocol of the provisioning provider
- the provprovidername, which is the name of the provider and it will appear on the provider's data entry screen
- and the provider process name, which must be the same as the custom process class that will be created for the provider.
Also, in this file, you can define the following:
- generalparameters, which are the provider parameters,
- hardwaretypes, which are the supported hardware types
- relatedpages, which are the data entry or summary pages that are implemented to cover the custom provider's processes
- regionmapping, which is a boolean value indicating whether there should be region mapping configured for the provider
- usedbyusageservicecatalog, which is a boolean value indicating whether the provider can be used by a usage service catalog
- testconnectionavailable, which is a boolean value indicating whether the "Test Connection" button should be available for the provider
2. Provisioning Provider Process Class
Create a Process Class for the provisioning provider that extends com.crm.process.provisioning.CRMProcessProvisioningProviderBean.
You must use @Stateless(mappedName = "ejb/CRMProcessExampleProvider") to define the mapped name of the provisioning provider EJB. The mapped name should match the one defined in provisioningproviders.xml metadata file.
The new process class must implement the following methods, which are defined as abstract in CRMProcessProvisioningProviderBean parent class:
- public void testConnection(CRMDOProvProvider provProvider)
This method is called to test whether the connection with the provisioning provider is valid.
public ProvisioningProviderResult processAddService(AddServiceParameters addServiceParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever an 'Add Service' subscription action is executed.
public ProvisioningProviderResult processAmendBundleService(AmendBundleServiceParameters amendBundleServiceParameters,
ArrayList<ProvisioningProviderService> removedProviderServices,
ArrayList<ProvisioningProviderService> addedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> removedProviderInstalledItems,
ArrayList<ProvisioningProviderInstalledItem> addedProviderInstalledItems)This method is called whenever an 'Amend Bundled' subscription action is executed.
public ProvisioningProviderResult processRemoveService(RemoveServiceParameters removeServiceParameters,
ArrayList<ProvisioningProviderService> removedProviderServices,
ArrayList<ProvisioningProviderService> addedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> removedProviderInstalledItems,
ArrayList<ProvisioningProviderInstalledItem> addedProviderInstalledItems)This method is called whenever a 'Remove Service' subscription action is executed.
public ProvisioningProviderResult processSwapService(SwapServiceParameters swapServiceParameters,
ArrayList<ProvisioningProviderService> removedProviderServices,
ArrayList<ProvisioningProviderService> addedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> removedProviderInstalledItems,
ArrayList<ProvisioningProviderInstalledItem> addedProviderInstalledItems)This method is called whenever a 'Swap Service' subscription action is executed.
public ProvisioningProviderResult processStartService(StartServiceParameters startServiceParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever a 'Start Service' subscription action is executed.
public ProvisioningProviderResult processStopService(StopServiceParameters stopServiceParameters,
ArrayList<ProvisioningProviderService> providerServices, ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever a 'Stop Service' subscription action is executed.
public ProvisioningProviderResult processAddInstalledItem(AddInstalledItemParameters addInstalledItemParameters,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems, ArrayList<ProvisioningProviderService> providerServices)This method is called whenever an 'Add Installed Item' subscription action is executed.
public ProvisioningProviderResult processRemoveInstalledItem(RemoveInstalledItemParameters removeInstalledItemParameters,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)
This method is called whenever a 'Remove Installed Item' subscription action is executed.
- public ProvisioningProviderResult processMoveInstalledItem(MoveInstalledItemParameters moveInstalledItemParameters,
ArrayList<ProvisioningProviderInstalledItem> removedProviderInstalledItems,
ArrayList<ProvisioningProviderInstalledItem> addedProviderInstalledItems)This method is called whenever a 'Move Installed Item' subscription action is executed.
public ProvisioningProviderResult processSwapInstalledItem(SwapInstalledItemParameters swapInstalledItemParameters,
ArrayList<ProvisioningProviderInstalledItem> removedProviderInstalledItems,
ArrayList<ProvisioningProviderInstalledItem> addedProviderInstalledItems,
ArrayList<ProvisioningProviderService> providerServices)This method is called whenever a 'Swap Installed Item' subscription action is executed.
public ProvisioningProviderResult processChangeSubscriptionDistribution(ChangeSubscriptionDistributionParameters changeSubscriptionDistributionParameters,
ArrayList<ProvisioningProviderService> removedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> removedProviderInstalledItems,
ArrayList<ProvisioningProviderService> addedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> addedProviderInstalledItems,
ArrayList<ProvisioningProviderService> authorisedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> initialisedProviderInstalledItems)This method is called whenever a 'Change Subscription Distribution' subscription action is executed.
public ProvisioningProviderResult processBecomeSubscriber(BecomeSubscriberParameters becomeSubscriberParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever a 'Become Subscriber' subscription action is executed.
public ProvisioningProviderResult processActivateSubscription(ActivateSubscriptionParameters activateSubscriptionParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever an 'Activate Subscription' subscription action is executed.
public ProvisioningProviderResult processDeactivateSubscription(DeactivateSubscriptionParameters deactivateSubscriptionParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever a 'Deactivate Subscription' subscription action is executed.
public ProvisioningProviderResult processTerminateSubscription(TerminateSubscriptionParameters teminateSubscriptionParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever a 'Terminate Subscription' subscription action is executed.
public ProvisioningProviderResult processRestSubscription(RestSubscriptionParameters restSubscriptionParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever a 'Rest Subscription' subscription action is executed.
public ProvisioningProviderResult processEndSubscriptionResting(EndSubscriptionRestingParameters endSubscriptionRestingParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever an 'End Subscription Resting' subscription action is executed.
public ProvisioningProviderResult processShortTermSubscriptionActivation(ShortTermSubscriptionActivationParameters shortTermActivationParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever a 'Short Term Activation' subscription action is executed.
public ProvisioningProviderResult processEndShortTermSubscriptionActivation(EndShortTermSubscriptionActivationParameters endShortTermSubscriptionActivationParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever an 'End Short Term Activation' subscription action is executed.
public ProvisioningProviderResult processShortTermSubscriptionDeactivation(ShortTermSubscriptionDeactivationParameters shortTermSubscriptionDeactivationParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever a 'Short Term Deactivation' subscription action is executed.
public ProvisioningProviderResult processEndShortTermSubscriptionDeactivation(EndShortTermSubscriptionDeactivationParameters endShortTermSubscriptionDeactivationParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever an 'End Short Term Deactivation' subscription action is executed.
public ProvisioningProviderResult processAddServiceUsage(AddServiceUsageParameters addServiceUsageParameters,
ArrayList<ProvisioningProviderUsageDataRecord> protocolProviderUdrs,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever an 'Add Service Usage' subscription action is executed.
public ProvisioningProviderResult processCancelledUDRs(CancelServiceUsageParameters cancelServiceUsageParameters, ArrayList<ProvisioningProviderUsageDataRecord> providerUsageDataRecords)
This method is called whenever a 'Cancel UDR' action is executed.
public ProvisioningProviderResult processResetSubscription(ResetSubscriptionParameters resetSubscriptionParameters,
ArrayList<ProvisioningProviderService> providerServicesForDeactivation,
ArrayList<ProvisioningProviderService> providerServicesForActivation,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItemsForActivation,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItemsForDeactivation,
ArrayList<ProvisioningProviderUsageDataRecord> providerUdrsForActivation,
ArrayList<ProvisioningProviderUsageDataRecord> providerUdrsForDeactivation,
ArrayList<ProvisioningProviderService> authorisedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> initialisedProviderInstalledItems)This method is called whenever a 'Reset Subscription' subscription action is executed.
- public ProvisioningProviderResult processChangeSubscriberAccount(ChangeSubscriberAccountParameters changeSubscriberAccountParameters)
This method is called whenever a 'Change Subscriber Account' action is executed.
- public ProvisioningProviderResult processChangeSubscriptionLocation(ChangeSubscriptionLocationParameters changeSubscriptionLocationParameters)
This method is called whenever a 'Change Subscription Address' action is executed.
- public ProvisioningProviderResult processExtendSubscriptionGracePeriod(ExtendSubscriptionGracePeriodParameters extendSubscriptionGracePeriodParameters,
ArrayList<ProvisioningProviderService> providerServices,
ArrayList<ProvisioningProviderInstalledItem> providerInstalledItems)This method is called whenever an 'Extend Grace Period' action is executed.
- public ProvisioningProviderResult processAmendServicesAndInstalledItems(AmendServicesAndInstalledItemsParameters amendServicesAndInstalledItemsParameters,
ArrayList<ProvisioningProviderService> removedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> removedProviderInstalledItems,
ArrayList<ProvisioningProviderService> addedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> addedProviderInstalledItems,
ArrayList<ProvisioningProviderService> authorisedProviderServices,
ArrayList<ProvisioningProviderInstalledItem> initialisedProviderInstalledItems)This method is called whenever an 'Amend Services and Installed Items' action is executed.
- public ProvisioningProviderResult processCustomProvisioningAction(CustomProvisioningActionParameters customProvisioningActionParameters)
This method is called whenever a Custom action is executed.
- public Boolean authenticate(AuthenticateParameters authenticateParameters)
This method is called to authenticate the subscriber.
3. Data Entry View Pages and Java classes
You will need to create a data entry view page for each of the provisioning provider's individual processes. These pages must be defined in the relatedpages section of the provisioningproviders.xml file, to appear as links in the provisioning providers screen.
These processes are considered Custom Provisioning Provider Actions. Thus, for each of these processes a new Java Class implementing com.crm.process.provisioning.CustomProvisioningAction should be created. In the example below, a java class is created for the "Set pin code" process.
Then, an object of this java class is used in the data entry view page to send the custom provisioning requests for the "Set pin code" process.
On clicking the submit button, the submitButton() method of the SetPinCodeView class will be called and the custom provisioning request will be sent to the provisioning provider handler.
4. Set up the plugin provider through CRM.COM
The plugin provider can be set up through CRM.COM from the Provisioning Providers data entry view page, which can be found under Settings & Admin > Billing Application > Subscription & Billing Settings > Set up Provisioning Providers.
Once the provider is defined in the provisioning providers metadata file, it can be added as a plugin through the Provisioning Providers data entry view page. By selecting "Set Up a Provisioning Provider", you can add the plugin provider to the list of provisioning providers. After adding it, you will be able to set it up, manage the provider's provisioning requests, perform reset subscription runs, reset a single subscription of the provider and execute the processes defined in the related pages of the provisioning provider's definition (in the provisioningproviders.xml file).