Setting up Extra Services

521 views 0

How to sell Extra Services via the Atomia User Panel.


When a customer has created their account and has access to the Atomia User Panel you can let them buy extra services like databases, SaaS integrations, etc. via the the Extra Services page.

Image: Available extra services in the User Panel.

This guide is a general overview of setting up extra services. Some services have dedicated guides of their own, like Enabling Whois protection, where the specific product options needed are explained.

Setting up products as extra services

There are only two steps required to set up selling products as extra services.

Enabling extra services for package

For extra services to show up for a customer their main package, e.g. a hosting package, must have extra services enabled. This is done by adding the following Other data to the product of the package:

  • Specify that a package allows ordering extra services.
    • Name: HasExtraServices
    • Value: true

Adding the products to the default shop

Add the products that should be available as Extra Services to the shop marked as default and give them the category ExtraServices. They will now show up for customers that have packages with HasExtraServices set to true.

Setting product options

Depending on how you want the products to be purchasable by the customer, there are a number of options you can set by adding Other data name-value pairs to the products:

  • The product can be ordered more than once as an extra service.
    • Name: allowMultiple
    • Value: true
  • The product is one option for a group of products that represent the same service and are mutually exclusive, e.g. a basic, pro, and enterprise package.
    • Name: productValue
    • Value: a common identifier for the product group, e.g. myExtraService
  • The product is domain based. This will require the customer to add a domain name when ordering the product.
    • Name: domainBased
    • Value: true
  • List of packages for which this product is available (instead of all packages, which is default).
    • Name: packages
    • Value: list of package article numbers separated by | character, e.g. HST-GLDY|HST-GLDQ|HST-GLDM
  • List of products the customer must have in their account to order the extra service.
    • Name: applicableToArticleNumbers
    • Value: list of item article numbers separated by | character, e.g. DMN-COM|DMN-NET|DMN-ORG
  • For domain based products, only accept the order if the provided domain exists in the customer’s subscriptions.
    • Name: checkIfDomainExists
    • Value: true
  • For domain based products, a list of TLDs for domain validation when order is submitted.
    • Name: acceptableDomainTlds
    • Value: list of TLDs for domain validation separated by | character, e.g. com|net|org
  • For products with amounts, this is the minimum amount the customer can order
    • Name: minimalproductvalue
    • Value: an integer
  • For products with amounts, this is the maximum amount the customer can order
    • Name: maximalproductvalue
    • Value: an integer
  • For products with amounts, this is the steps to create a list between minimum and maximum amounts
    • Name: productvaluestep
    • Value: a number
  • For products with amounts, this is the resource key for the unit of the amount, that will be fetched from the App_GlobalResources/<ThemeName>Common.resx file.
    • Name: productvalueunit,
    • Value: resource key, e.g. GB or no or dbs. Add it but leave value empty for no unit.

There is also one Other data option that can be added to any hosting package that allows for customers to order extra services:

  • Only extra services with the same renewal period as the package can be ordered.
    • Name: CheckDuration
    • Value: true

Setting up upgrade/downgrade between products

If some extra services should be upgradeable and downgradable between each other (e.g. Basic, Pro and Enterprise variants) some database work is needed.

This will allow the service to be upgraded by clicking the Change button in the Extra services tab under Subscriptions:

  1. Add an entry to AtomiaBilling.dbo.upgrade_group
    • name should be any name you want to identify your group of products
  2. Connect your upgrade group with your extra services products in AtomiaBilling.dbo.upgrade_group_member
    • fk_group_id should be the id of the group you created in dbo.upgrade_group
    • fk_item_id should be the id of the product from the AtomiaBilling.dbo.item table
    • upgrade_level should be sequential numbers where the lowest level service has the lowest number, e.g. Basic: 1, Pro: 2, Enterprise: 3
    • upgradeable, downgradeable, upgradeable_from and downgradeable_from can all be set to 1 in most cases.

For upgrades to work, the subscription that is created when the customer orders the extra service must get the Other data with ServiceId added. This is normally handled automatically by Atomia Automation Server. But it is good to be aware of, e.g. if you have set the Provisioning service of your products to None during testing.

Pre-selecting products and amounts

If you send the customer to the Extra Services page via a link it is possible to set a pre-selected product and amount from the list of extra products. This is done by adding the query strings selectedProduct and selectedValue to the URL. The former can be used by itself while the latter also requires a product to be pre-selected. If selectedValue is left out the minimum value will be selected.

E.g. to pre-select MySQL Database with the amount three in the Atomia test environment you would use this URL for customer 100001:


A requirement to be able to pre-select a product is that it contains the Other data minimalproductvalue, maximalproductvalue, productvaluestep and productvalueunit.

Useful tip

To be able to pre-select a product where the amount should always be 1, configure the amount related Other data like this:

  • Name: minimalproductvalue, Value: 1
  • Name: maximalproductvalue, Value: 2
  • Name: productvaluestep, Value: 1.1
  • Name: productvalueunit, Value: (Leave empty or add any unit you would like)

Was this helpful?