Concept - B2B Extension Module (1.0 - 1.1)


The B2B Extension Module extends applications of the types intershop.SMBWebShop and interhop.B2CBackoffice with additional B2B functionality.

 Software Version Information

The content of the present document is valid for the following combinations of software versions:

B2B ModuleIntershop 7
1.17.4 CI

Cartridge Structure

New Permissions and Roles

The B2B Extension Module supports roles and permissions for storefront users.


The table below lists the introduced permissions.

Permission ID



Permission to purchase products


Permission to manage the users of the customer


Permission to approve pending orders


Permission to create and use own quotes


Permission to manage the branding


The table below lists the introduced roles and their assigned permissions.

Role ID


OilCorp User







The B2B buyer.








The B2B approver.








The B2B account owner.







My Account - Dashboard

The overview page of My Account has been adjusted to behave like a dashboard for B2B users. The roles described above determine the information to be displayed.

The following sections are available:

  • My Orders
  • My Order Templates
  • My Approvals
  • My Quotes
  • User Budgets

Role: Buyer

Role: Approver

Role: Account Admin

My Account - Navigation

The navigation section on the left side of My Account has been extended. Now it:

  • Shows the customer to which the currently logged in user belongs
  • Shows the role of the currently logged in user
  • Separates units business logic-wise
  • Introduces CMS components that depend on the roles assigned to the currently logged in user
  • Highlights the selected menu item


Quotes are used for price negotiations between the customer and the merchant.


While there are more complicated processes possible, the current implementation is intentionally kept simple.


The current implementation recommends that the user is logged in before doing anything. After logging in, the user can:

  • Create new quotes (only one active new quote is allowed at a time, the quote behaves like a shopping cart).
  • Submit / delete / refuse a quote.

  • See/manage the list of quotes in the My Account section.

  • See the quote request details in the My Account section.

Commerce Management Application

The current implementation supports the following administrative tasks:

  • A quote manager can see a list of quotes.

  • The quote manager needs to be assigned to the customer to see a customers quotes.

  • The quote manager can reject/edit/submit a quote.

User Management

The B2B Extension Module introduces a complete management section for customer users.

In addition to creation and deletion of users, managing a single user includes role and budget settings as well as profile settings.

The profile dialog now features a checkbox for controlling the active flag. That is, it is now possible to enable and disable a user directly in the storefront.

Role Management

At business object level, the entire role management is covered by two business object extensions. With extending CustomerBO, CustomerBOSecurityExtension provides the functionality to ask a customer for its roles as well as to obtain all users that have a certain role or to look up a role by its ID. The purpose of UserBORoleExtension is to assign and retrieve a role to and from a user.

User Creation in Back Office

When a user is created in the customer section of the back office, it is automatically given the account owner role, APP_B2B_ACCOUNT_OWNER. The corresponding pipeline of the B2B back office plugin, ProcessCustomerUser_52, provides an extension point CustomerUserCreated, which is extended by the pipeline CreateCustomerUser-Startin bc_b2b_ext. The corresponding extension is CreateCustomerUser.extension in app_bo_ch_sales_b2b_ext.

User Registration in Storefront

Upon user registration in the storefront, the created user is granted the account owner role of the customer created at the same time. Again, as with the user creation via the back office, CreateCustomerUser-Start is used to extend the standard user creation process. In this case, however, the extension point UserRegistered of the pipeline ProcessUserAccount in sld_ch_sf_base is extended.

Job to Reset Monthly Budgets Spent

The job ResetMonthlyBudgetsSpentJob, which has been created during the database initialization (DBinit), takes care of resetting all monthly budgets spent by users. The job therefore iterates through all applications, their defined customers and the users once a customer is identified as a group customer (or "container" of users).

By default, the job is disabled. You can define the execution schedule of the job using the Schedules module of the SMC (root domain). See the setup example below.

Order Templates

The order templates feature of the B2B Extension Module is, basically, an adapted wishlist feature.


The order template functionality resembles the wishlist functionality. Therefore, an application that uses order templates cannot use wishlists. 

Currently, there are the following differences between order templates and wishlists:

  • There are no public order templates, and thus no search support.
  • There is no preferred order template, and that is why adding a product to an order template always requires selecting an order template.
  • Order templates can be added to the cart completely.
  • The cart can be saved into an order template.
  • Adding a product from the cart to an order template does not remove it from the cart.

Order Approval

The checkout process has been extended by a simple approval process. It depends on the following criteria whether the current order needs approval or not:

  • Remaining monthly budget of the user
  • Order spend limit of the user

(see UserBOOrderApprovalExtension)

If an approval is required, the system displays according messages on order review pages and order confirmation pages.

The order appears on the Pending Orders list of the buyer and on the Orders To Approve list of all users with the permission to approve orders.

Class Diagram

Quick Order

It is possible to add multiple products to the cart at once through providing pairs of product ID and quantity via the Quick Order functionality.

By default, the user can add 10 products. Clicking Add 5 Lines extends the form with five additional lines, each with two pairs of product ID and quantity. Using the CSV import, you can import a configurable number of products (see pipelet properties of the pipelet TransformCSVFileToInputPairs in the pipeline ProcessQuickOrder) in a single step, just by providing a CSV file.

The quick order functionality was also implemented on the cart page with the restriction of only one product at the time.

Customer Specific Price Lists and Catalog Views

To allow business customer specific pricing and catalog filters, price lists and catalog views can be assigned to business customers. The assignment is done via a hidden customer segment, HG_<CustomerNo>. The assignment is valid for all users that belong to a business customer.

The assignment is done in the back office. To this end, it features two new tabs, Price Lists and Catalog Views, in the customer detail view:

There is no need to implement new features. The customer specific assignment is just an abbreviation for the following:

  1. Create a new customer segment.
  2. Assign exactly one business customer to this customer segment.
  3. Create one or more price lists.
  4. Assign the customer segment to these price lists only.
  5. Create one or more catalog views.
  6. Assign the customer segment to these catalog views only.


A user with the role account admin can upload an individual branding logo, visible for all logged in users of a customer.


Currently, this feature is not supported with enabled page caching.

Save for Later

A logged in user can save an item from the cart in a special list in order to save it for later. This Save For Later List is displayed at the bottom of the cart. Later, the user can move an item from this list to the cart or remove it from the list.

This functionality is implemented using a special wish list, which is not displayed within the Order Templates section of My Account.

Order Search Enhancements

The order search within the Order History of My Account has been improved by adding a search for order number or purchaser name.

Desired Delivery Date

The checkout shipping page provides a new section with an input field for the desired delivery date. In addition to a date validation, a branded calendar has been implemented for picking up a date.

The date is saved as basket attribute value (table BASKET_AV).

External Price Provider

The external price provider illustrates how an external system can be used to query a product price. This is done using a managed service. In addition, there has been implemented a product price provider. For demonstration purposes, there is a price look-up from a CSV file. Generally, it is possible to implement calls to external systems.

General Workflow

  • ProductPriceProvider and ExternalProductPriceProviderImpl have been implemented and registered. This makes sure that Intershop 7 uses ExternalProductPriceProviderImpl to look up a price. This provider has been set to the first position. This means, if the price query is not successful, other registered price provider(s) are called.
  • The class ExternalProductPriceProviderImpl calls the external price service. It will get this information from the ServiceConfigurationBORepository. For more details, refer to
  • The implemented external price service looks up a local CSV file. If a price cannot be found, it returns null. This is necessary to indicate that there is no price found.

CSV File Format

The externalPrices.csv file, which is used for demonstration purposes, is stored in $IS_SHARE/sites. It has the following structure:

  • The first column is the CustomerID. This facilitates customer specific prices. If the value is set to the string null, the price is returned for all customers.
  • The second column is the ProductSKU. It is required to identify the product.
  • The third column is the PriceUSD. Here it is assumed that the price is USD.

Possible Extensions

The price provider delivers more detailed information as used in the show case. Prices from previously called price providers are available.
The price provider may use the managed service to use its monitoring and logging capabilities. For this simple example, a direct query of the CSV file would be easier. The strength of a managed service is its monitoring and logging capabilities. This is recommended for calling external systems.

Additional Shopping Cart Information

The user can provide additional information on the checkout review page:

  • Cost Center
  • Project
  • Message to Merchant

The information is saved as basket attribute values (table BASKET_AV). At business object level, the information is handled via an extension of the BasketBO.

The information provided in the Knowledge Base may not be applicable to all systems and situations. Intershop Communications will not be liable to any party for any direct or indirect damages resulting from the use of the Customer Support section of the Intershop Corporate Web site, including, without limitation, any lost profits, business interruption, loss of programs or other data on your information handling system.
The Intershop Knowledge Portal uses only technically necessary cookies. We do not track visitors or have visitors tracked by 3rd parties. Please find further information on privacy in the Intershop Privacy Policy and Legal Notice.
Knowledge Base
Product Releases
Log on to continue
This Knowledge Base document is reserved for registered customers.
Log on with your Intershop Entra ID to continue.
Write an email to if you experience login issues,
or if you want to register as customer.