Managing customer relationships, streamlining operations, and optimizing revenue generation is crucial in the world of modern business. Subscription models have become increasingly prevalent across various industries, including software as a service (SaaS), media and entertainment, e-commerce, and more.
Salesforce, a global leader in customer relationship management (CRM) solutions, offers a wide array of tools and functionalities to help businesses achieve their goals. Two essential components within their ecosystem are Salesforce Subscription Management and Salesforce Billing. While both Salesforce solutions individually offer robust features for managing subscriptions and billing, many businesses choose to harness the power of both—and these systems must be properly integrated to enhance efficiency and streamline operations. Software integrations such as this one can be very complex and may pose significant challenges. In this article, we’ll explore the challenges businesses may face when attempting to integrate Salesforce Subscription Management and Salesforce Billing and discuss strategies for navigating these hurdles.
The integration challenge between Subscription Management and Salesforce Billing typically arises when organizations choose to implement Subscription Management as an additional layer on their existing Salesforce Billing setup; this is because they need to seamlessly combine the functionalities of Subscription Management with their established Salesforce Billing infrastructure, which can be a complex endeavor. Here are a couple of examples:
#Example 1: A tech company, previously reliant on Salesforce Billing for managing its software-as-a-service subscriptions, opts to elevate its subscription management capabilities by acquiring a Subscription Management solution built on the Salesforce platform. Integrating this new software with their existing Salesforce Billing setup is a significant challenge because it involves synchronizing customer data, billing processes, and subscription renewals seamlessly.
#Example 2: A media streaming platform with an extensive customer base relies on Salesforce Billing for their subscription billing needs. While expanding their services, they procure Salesforce Subscription Management to effectively manage a variety of subscription plans and control access to content. The integration challenge emerges as they need to ensure that the Subscription Management system aligns with Salesforce Billing for accurate customer billing, tracking subscription changes, and managing customer subscriptions effectively.
What is it about this set up that makes the integration so complicated? The top 4 reasons are:
Divergent Data Models
Salesforce Subscription Management and Salesforce Billing are built on different data models. Subscription Management primarily focuses on managing customer subscriptions, while Billing centers around invoicing and revenue collection. These divergent data models can create complexities when it comes to synchronizing data, such as subscription details, pricing, and payment history, between the two systems.
Pricing and Billing Discrepancies
Mismatched pricing and billing discrepancies are common issues that arise during integration, as Salesforce Subscription Management may offer a high degree of flexibility in pricing and subscription management, while Salesforce Billing may have predefined billing processes that don’t always align with the complexity of certain pricing structures.
Additionally, there’s often disparity between their pricing models. In Subscription Management, a single product can offer various subscription options, such as annual, monthly, or one-time payment plans. In contrast, Salesforce Billing follows a one-to-one relationship between products and subscription types. This fundamental difference in how they handle pricing structures can complicate the integration process and create potential issues.
Furthermore, one specific complication that arises during the integration of Subscription Management with Salesforce Billing is the need for additional entries in the Price Book Entry record. In Salesforce Billing, the Price Book Entry record is fundamental to the billing process, linking products to their respective prices and subscription terms. However, Subscription Management often requires more detailed information, especially when dealing with diverse subscription types such as annual, monthly, or one-time payment plans. Each of these subscription options may have unique pricing, billing cycles, and terms associated with them. As a result, Subscription Management requires additional entries into the Price Book Entry record that may complicate the existing integration with Salesforce Billing.
Compliance and Security
Maintaining compliance and data security standards can be particularly challenging during integration. Both Subscription Management and Billing may handle sensitive customer data, and ensuring that all regulatory requirements are met while data is shared between systems is paramount.
Lastly, the generalized complexity of integrating Subscription Management with Billing is a common concern, as it may require custom development, data connectors, and the creation of integration workflows, which can be time-consuming and resource-intensive. And, managing the integration as Salesforce updates its systems can pose an additional ongoing challenges. Common errors which might surface during the integration process include:
- FATAL_ERROR System.SObjectException: Field is not writeable: Invoice.ReferenceEntityId
- unable to modify activated order: cannot delete order, or add or remove order products: 
- Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, blng.OrderProductTrigger: execution of BeforeInsertcaused by: System.SObjectException: SObject row was retrieved via SOQL without querying the requested field: Product2.blng__TaxRule__c
- DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, blng.OrderProductTrigger: execution of BeforeInsertcaused by: System.QueryException: Insufficient permissions: secure query included inaccessible field
- Component Failures 
| Type Name Problem
| ───── ──────────────── ──────────────────────────────
| Error ExperienceBundle enableExperienceBundleMetadata
| Error Site enableExperienceFriendlyUrls
| Error ExperienceBundle enableExperienceBundleMetadata
| Error Site enableExperienceFriendlyUrlsSetting Org Settings Failed.
- Cannot activate this order because one or more of its order products is missing a default subscription term for the recurring charge. To continue, enter a value for Default Subscription Term for any order products that don’t have one.
Now, that we’ve covered how complex this integration is, let’s delve into the remedies for resolving the conflicts that may arise between Salesforce Billing and Subscription Management.
Challenge: Data discrepancies are a common source of integration conflicts.
Solution: To address this, businesses must assess the data being transferred between systems and identify discrepancies. Standardize data formats, validate inputs, and implement data cleansing processes to ensure consistency across systems. Data integration tools and platforms can also help facilitate this process.
Addressing Order Activation Issues
Challenge: One of the most critical integration challenges pertains to order activation. When customers place orders through the experience site, it’s imperative that their subscriptions are activated without a hitch. However, issues often surface when Salesforce Billing’s required fields are left empty by default, leading to order activation failures.
Solution: To overcome this challenge, it’s essential to automatically populate the required fields in Salesforce Billing Orders behind the scenes. This process will ensure that orders are seamlessly activated, eliminating potential disruptions in the subscription process.
Synchronizing Product Selling Models
Challenge: Salesforce Subscription Management supports the flexibility of multiple subscription models for a single product, whereas Salesforce Billing is designed to accommodate only one subscription model per product. This can lead to logical conflicts when attempting to integrate the two systems.
Solution: To address this challenge, consider implementing a mapping system that links the multiple selling models in Salesforce Subscription Management with the corresponding product in Salesforce Billing. This approach enables you to maintain the necessary flexibility while ensuring compatibility between the two systems.
Ensuring Price Book Line-Item Compatibility
Challenge: A common issue arises when Salesforce Subscription Management requires a reference to the Product Selling Model at the Price Book Entry level. Synchronizing this aspect effectively is crucial to maintain consistency between the systems.
Solution: To address this challenge, make sure that the reference to the Product Selling Model is consistently populated at the Price Book Entry level in both systems. This ensures that there are no discrepancies when it comes to pricing and product model information.
Managing Multiple Object Permission Conflicts
Challenge: Integration often triggers multiple permission errors in Salesforce Billing when orders are initiated through the experience site, creating conflicts in the process.
Solution: To resolve these conflicts, it’s essential to adjust permissions for the experience user. This can be achieved by revisiting the user’s profile and permission sets in Salesforce and granting the necessary access to objects and fields in Salesforce Billing. By aligning permissions, you eliminate these conflicts and maintain a smooth integration.
In conclusion, by implementing these detailed remedies, you can effectively resolve the conflicts that may arise between Salesforce Billing and Subscription Management. This results in a seamless integration that streamlines order activation, synchronizes product models, maintains consistency in pricing, and resolves errors, ultimately enhancing the efficiency of your subscription and billing processes.