Release Version 2 (SEP 2018)

Release Version 2 (SEP 2018)

Release Notes for Version 2 of Enxoo Packages
Release date: 14/09/2018

Enxoo Commerce (enxCPQ - core package)

Enxoo Commerce Version 2 (v2) introduces fundamental architectural changes in the underlying structure of the application with a view to establish more stable quote-to-cash engine foundation designed for subscription-based businesses. We are treating it as an enabler for future improvements on the roadmap. Version 2 also addresses previous challenges around integration and extendibility with custom functionalities build on implementation projects.

Below is a high-level list of changes introduced with Enxoo Commerce Version 2.

General

Product Naming

It has been decided to drop the old product naming (Enxoo CPQ, ECPQ) and start using a new name: Enxoo Commerce which is an omni-channel quote-to-cash solution designed for communications & subscription-based business.


Lightning First

With Enxoo Commerce Version 2 - we decided to follow Lightning first principle. This means that new features are developed for the Lightning user interface.

Old features are still supported in Salesforce Classic user interface, but this is going to be slowly decommissioned.


End-to-End Sales Process

One Time Charge (OTC), Monthly Recurring Charge (MRC) fields addition

Fields OTC (one-time charge), MRC (monthly recurring charge) and their counterparts (List, Discounts) used for the purpose of storing product pricing were added into the managed package. Previously we assumed that these fields were supposed to be created in subscriber's orgs after package installation. 

The fields were added on the following objects and are grouped in the commercials section:

  • Quote, QuoteLineItem,
  • Opportunity, OpportunityLineItem,
  • Order, OrderItem,
  • Cart.

Below is an explanation of what these fields mean:

  • OTC / MRC: one-time / monthly recurring charge - used to store offer price,
  • OTC List / MRC List: one-time / monthly recurring charge list price - used to store list price,
  • Discount: percentage discount,
  • Discount Amount:  list - offer,
  • Total: offer price * quantity,
  • List Total: list price * quantity.


Locations Management

With Enxoo Commerce Version 2 we are introducing a new object - Location, designed to store geographical location data. The object contains basic fields typical for every address, including geocoordinates, country, city, street, street number, postal code.

Also, we added a new attribute type that allows adding Location attribute into the product configuration. Such attribute is displayed as a form with a map allowing to enter a location as product configuration attribute. The form contains autocomplete feature that suggests existing location records or address from Open Street Maps.



Table of Contents



Quote Cloning & Versioning improvements

It is now possible to easily clone the quote using a clone button. Cloning a quote creates a new version of the quote under the same opportunity and copies all products with their configuration from the primary quote. Of course, only one quote is primary and syncing to an opportunity (as in the standard Salesforce).


Product Catalogue

Bundles Improvements

Enxoo Commerce Version 2 introduces improvements in the product catalog structure enabling support of configurable bundles (previous version 1 allowed only non-configurable bundles, with no possibilities to introduce rules on top of the bundle mix creation).

A bundle is defined in two steps. The first step assumes the creation of bundle elements. Each element may have multiple options for selection. These options are non-configurable products or non-configurable product options that become part of the bundle mix.

Example 1: Elements of a bundle

Smart Home bundle is built from two elements: Internet & TV. For Internet we can choose Internet Access - 10MB, 50MB, or 100MB options, for TV we can choose Basic, Family, or Premium option.

The second step of bundle definition requires the creation of bundle options. We are going to create a bundle option for each combination of allowed bundle mix.

Example 2: Creation of bundle options

for the above defined Smart Home, there are nine permutations of options, but only certain combinations can be sold:
- Internet Access - 10MB with Cable TV - Basic will be called Smart Home - Basic,
- Internet Access - 50MB with Cable TV - Family will be called Smart Home - Family,
- Internet Access - 100MB with Cable TV - Premium will be called Smart Home - Premium.

Bundle options are saved with a Product Record Type - Option (same as Product Option) and need to be added to the price book. Each bundle option may have a different pricing:

Options configuration is respected in the product configurator interface which takes care of making sure only allowed bundle mix can be selected:

Based on the configuration selected by the user - proper bundle option is linked with a quote line item and option price is returned in the OTC / MRC fields:

Finally, the product catalog structure supports the concept of recurrence - meaning a user can add a bundle option into the higher level bundle to introduce the next layer of the bundle. 

Example 3: Next layer of the bundle

Smart Home - Premium option can be added as bundle element of Fibre to the Home bundle introducing 3-level bundle structure.


Related Products

Enxoo Commerce Version 2 introduces the concept of a product relationship that allows specifying different types of relationships between products. Product relationship can be used to satisfy multiple use cases:

  • creating wrapper products with multiple individual elements underneath (e.g. one VPN Network aggregating multiple individual VPN Ports underneath);
  • products with add-on options (e.g. Phone & Data Plan with Extra Data Package and Insurance Service);
  • recommended related products (cross-sell);
  • recommended up-sell products.

Version 2 introduces a basic product relationship functionality without an extensive support for defining business rules (this will be added in the future versions). 

Below is an example of a product relationship between VPN Network (wrapper product) and VPN Port:

Such a relationship is reflected in the product configuration screen with Additional Products section at the bottom of the screen that allows adding VPN Port under wrapper VPN Network.

Product relationship is visible in the cart view by showing that VPN Port (4) has a reference to VPN Network (3). The relationship is saved in the Related Product field on the Quote Line Item.

Related Products functionality will be improved in the future versions of the application in order to allow introducing more complex business logic between related products.


New Attribute Types

Enxoo Commerce Version 2 introduces two new types of attributes:

  • Location - renders an address input form (related to Location functionality),



  • Charges - renders one-time / recurring / usage-based charges applicable to particular products (related to Charges functionality),


Attribute Rules

Enxoo Commerce v2 introduces a concept of attribute rules allowing to add another business logic layer into the product configuration. Rules are evaluated during product configuration and are responsible for validating configuration correctness and guide users through this process. Rules are applied if certain scripted criteria are met.

Supported rule types:

  • Alert - shows an alert message to the user,
  • Disablement - disables a certain attribute,
  • Requirement - requires a certain attribute, 
  • Validation Rule - validates the input of an attribute,
  • Other Attribute Update - calculates the value of an attribute based on other attributes.

Example 4: A validation rule on a product attribute

Validating input is falling within a numeric range between 100 - 1000.

This is how following validation rule is presented to the user during product configuration:


Category Images Creation

We have improved a default category images creation method. Now a category image can be uploaded directly on the Category Record Page using Add Default Image button:


New Product / Bundle Design Functionality

In Enxoo Commerce v2, we have fully re-designed a Product / Bundle Design functionality which has been written using Lightning Components technology and it allows to define product configuration directly on the Product Record Page.

The new interface is much faster and fixes a few problems detected in the prior Visualforce interface. Drag-and-drop support was added for re-ordering records on lists. Thanks to the Lightning Components approach - this interface is easily extendible in subscriber's orgs, in case a customer would like to extend the catalog structure.


Pricing Engine

Charges

As an extension to the Version 1 pricing approach where it was possible to define prices at the level of a product, we've introduced a concept of charges. Charges are supposed to reflect different pricing models built from multiple different price components. As part of this story - also the whole pricing engine functionality was fundamentally refactored.

Following charge types are supported:

  • one-time,
  • recurring,
  • and usage-based.

Following charge models are supported:

  • flat fee,
  • per unit pricing,
  • volume per unit pricing,
  • volume pricing,
  • and tiered pricing.

Charges are defined within Salesforce as Product2 records (Charge record type), with a relationship to the parent product.

As charges are instances of Product2 it is possible to define Price Book Entries with prices for each charge (using Pricebook Management Tool).

Example 5: A product definition with the use of charges

  • Phone Data Plan (data plan purchased for a phone, pricing model is composed of one-time, recurring, and usage-based charges)
    • Activation Fee: one-time charge, flat fee 99 EUR
    • Subscription Fee: recurring charge, per unit pricing, 29 EUR monthly for each SIM Card
    • Data Overage Fee: applied if 10 GB included transfer is exceeded, usage-based charge, tiered:
      • 5 EUR for each GB of usage within 10 - 20 GB tier,
      • 9 EUR for each GB of usage over 20 GB.

Charges are rendered to the user using charge attribute type:

It is also worth mentioning that the old way of defining pricing at the product level is still valid and will be supported. Charges are supposed to be introduced only to support more complex pricing models that require more complex price elements other than just flat one-time or monthly recurring fees.

Together with this functionality, we enabled the creation of Price Rule Actions that can affect specific charges.

Charges are saved on a Quote Line Item as compound JSON field (enxCPQ__TECH_Charges_JSON__c) and rollups from charges are saved in OTC / MRC fields. In order to display charge details in a human-readable format on Quote Line Item / Opportunity Product / Order Item objects, you can use Lightning component for that purpose. The component is using Lightning Data Service and will work only if TECH Charges JSON field is added to the page layout.


Approval Engine

Approval Rules Page migration to Lightning Experience

In Enxoo Commerce v2, Approval Rule Page was redesigned to make it compliant with Lightning User Interface.


Technical

API & Domain Driven Refactoring

The application architecture was fundamentally restructured and we followed the Domain Driven Design approach in Version 2.

Our principal was for each application domain to be designed and built as a black box where domain implementation, as well as Salesforce internal details (ID's, technical database fields), are hidden to the outside world behind the layer of API exposing services as Global functions for interacting with domain implementation. 

This architectural change was required as an enabler for building domain-specific API's.

Following domains were identified:

  • Account & Contact Management,
  • Contract Management,
  • Location Management,
  • Opportunity Management,
  • Quote & Cart Configurator,
  • Pricing Engine,
  • Approval Engine,
  • Order Management,
  • and Product Catalog.


Enablement of Extension Packages Creation

In Enxoo Commerce v2, we have introduced a new way for overriding Managed Package logic with custom logic in the subscriber's orgs. 

Certain methods in the APEX code (mostly API layer of domain methods, query managers, and other functions containing business logic) that sometimes may require overriding in the subscriber's orgs were changed into Global Abstract methods.

Together with the control panel exposed in the Enxoo Settings manager, we're providing a mechanism that allows overriding default abstract classes logic with the custom implementation class logic.

Full details on how to use this feature are available in the developer user manual section.


REST API

We've introduced a concept of standardized REST API's that are exposing most common business functions as REST API endpoints.

With Enxoo Commerce v2 we have implemented following API's:

  • Product API: get,
  • Order API: get, post, put.

Detailed documentation is available here: Enxoo Commerce REST API documentation


CPQ Platform Event

The CPQ Platform Event object was introduced to trigger event notifications for asynchronous cross-domain integrations.


CPQ Logs Object

The CPQ Log Object can be used to record custom logs for different events. 

Detailed documentation is available here: CPQ Logger


Fields Sync Functionality

Enxoo Commerce v2 brings a native functionality that allows defining mapping of fields between different objects and triggers CPQ Event in order to perform sync between records (e.g. synchronization between quote line items and opportunity line items).

Fields mapping is defined flexibly allowing to sync standard & custom fields in the Enxoo Settings manager:


Query Optimisation

We have changed the way how query managers build queries excluding unnecessary fields from queries to improve query performance. Also, we have improved transactional caching mechanism eliminating few performance bottlenecks. This saves at least 30% of query execution time, depending on the amount of metadata within the Salesforce org.


Data Initialisation Scripts

For the purpose of easier testing and trials, we've included sample data initialization scripts that can easily set-up sample product catalog data as well as custom settings. This allows reducing time to spin a new org from hours to minutes.

Data can be initialized either by executing two lines of anonymous code:

CPQ_Utils90_DataSetup.initCustomSettingsForAllContexts();
CPQ_Utils90_DataSetup.initSampleData();

Or from a lightning component CPQ_Utils90_DataSetup that can be added to any lightning page:

Sample records from scripts are created with [ x ] prefix, which allows to identify them easily and later delete in case they are not needed.


Use of TECH_External_ID instead of TECH_Definition_ID

The pricing engine logic has been improved. In the Version 1, the TECH Definition ID field was used to match product configuration with options. It has been changed to the TECH External ID fields. This resolves a problem of a product configuration not working properly after the product / attribute / attribute value name has been changed over time.


CPQ Settings Manager Improvements

We have changed the layout of CPQ Settings Manager by adding help texts to describe settings purpose and a floating save bar with a search box.


Universal Lightning Components

As a part of the initiative of being Lightning First, we have added a few generic, heavily customizable lightning components that can be also used outside of the managed package to build custom user interfaces.

  • Record Table component allowing to display editable record list.


  • Draggable Objects Table component allowing to search & add records:

Further details about these lighting components can be found in the product documentation.


Disabling Triggers for specific users

It is possible to disable triggers for a specific user with CPQ_DISABLE_TRIGGER Enxoo Setting:


Other

Locale Settings Review

Product Configurator is now respecting user locale settings with numeric / currency fields formatting. 

It is still not resolved issue in the Pricebook Management Tool due to a problem in the underlying Handsontable.JS library.


AppExchange Publishing & Security Review

Enxoo Commerce app has passed the Salesforce Security Review process and is now officially listed in the AppExchange:  https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000EcqknUAB.


Knowledge Base

Together with the Version 2 release, we have launched a public Knowledge Base that is designed to store all product documentation & user manuals: Enxoo Products Knowledge Base.


Enxoo for Communications (enxB2B - extension package)

Enxoo for Communications Version 1 introduces BSS framework for telecom-specific quote-to-cash processes. It summarises enxoo experience in implementation projects from different telecom companies, and contains ready, extensible quote-to-cash workflow.

Below is a high-level list of features introduced with Enxoo for Communications Version 1


End-to-End Sales Process

Opportunity → Order → Service Process

Enxoo for Communications package version 1 introduced high level end-to-end workflow for Sales Process from Opportunity through Order up to Service.

Details about the workflow can be found in the product documentation, especially Video Guides.


Move, Add, Change, Dismantle Flows

Enxoo for Communications package version 1 introduced basic MACD support.


Sales & Operational Reports & Dashboards

Enxoo for Communications package version 1 includes set of standard Reports & Dashboards:

  • Sales Manager Dashboard
  • Operations Manager Dashboard
  • Marketing Manager Dashboard


Quote Configurator

Cost Items Management

Enxoo for Communications package version 1 includes basic capability to register Cost Items under Quote Line Items.


Feasibility Study

Enxoo for Communications package version 1 includes Feasibility Study feature - allowing to be overwriten on implementation projects.


Financial Profitability Calculation

Enxoo for Communications package version 1 includes financial profitability calculation logic calculating based on Cost Items under Quote Line Item:

  • Margin
  • Payback
  • IRR 
  • NPV


Order Management

Order / Order Item / Work Order / Service Workflow

Enxoo for Communications package version 1 introduces foundation of Order delivery process. More details about this can be found in other product documentation.


Provisioning Plans Management

We're allowing to define product provisioning plans - orchestration workflows which conditionally can be instantiated as a "definiton" of delivery workflow for particular product / item action.


Order Decomposition into Work Orders

We're able to decompose order into set of work orders, according to product provisioning plans.


Work Order Management Front-End

We're exposing a user interface allowing to manage Work Orders representing product delivery process in Kanban-alike style:


Automated Work Order Execution

We're able to use Work Order as a basis for automatic execution (or e.g. as a mechanism that can orchestrate actions in downstream network systems).


Service Assurance

Customer Trouble Tickets Management

We're supporting registration of Customer Trouble Tickets that can be related to Service records.


Network Trouble Tickets Management

We're supporting registration of Network Trouble Tickets that can group multiple Affected Services underneath.

The information managed on parent NTT case is automatically synchronised to child cases.


Change (Planned Maintenance) Management

We're supporting registration of Change - Planned Maintenance Tickets that can group multiple Affected Services underneath and can be used as a basis for Change Management process.


Work Orders Management

We're allowing to initiate Support Provisioning Plans from Case record. This triggers work order creation.


SLA Monitoring

We're enabling to monitor SLA on Cases and track key case milestones (date time opened, acknowledged, resolved, closed, etc.)


Technical

REST API

Enxoo for Communications package version 1 exposes standard API's to manage:

  • Work Orders 
  • Trouble Tickets

More details can be found in Enxoo for Communications REST API - Service Assurance document.