For billing and other integration purposes, Service Providers often require additional properties (or custom fields) to be added for customers, users, or services, and manage the values of these fields via the same portal. The flexible design of CloudPortal Services Manager allows these extended properties to be added and configured via the portal interface by CSPs themselves.

Recently Roger Alborough posted a blog on “Adding additional AD properties to Users”: /blogs/2014/05/19/cloudportal-services-manager-adding-additional-ad-properties-to-users/, although the blog focus on user AD properties, the same method also applies to adding additional properties to Customer object with or without AD attribute mapping. In summary:

  1. Custom fields can be added to Customer and User objects via CPSM portal > Customers > Configuration > Customer List > Display Properties page;
  2. To manage user properties, select “Type: Users” in List Filter section, and to manage customer properties, select “Type: Customers”.
  3. The menu option to the page is disabled (invisible) by default, a role permission (normally Service Provider Administrator) needs to be assigned before the page can be accessed;
  4. The custom properties can map to AD attributes if the “AD Attribute” field of the property is correctly defined. For customer object, the AD attributes map to the customer’s OU.
  5. For portal Bulk User Import feature to work with the additional user properties, these properties must have user’s AD Attribute mapping correctly defined.

Further to adding custom fields for customers and users, additional properties can also be defined for services including built-in services or your own custom services via Service Schema. 

Adding Additional Service Properties

Before you start, make sure the account you use to logon to CPSM portal has the Service Provider Schema Administrator rights so that you can access the page Configuration > System Manager > Service Schema.

Each service in CloudPortal Services Manager has 3 categories of configurable properties:

  1. Common service properties (not specific to customer or user plans) that are normally defined under “Service Settings”;
  2. Customer Plan (used to be called Package Template) properties if customer plan is enable for that service;
  3. User Plan (used to be called Service Access Level) properties if user plan is enabled for the service.

Before going ahead to configure the custom property, you need to first consider what type of property you are adding. In the example below, we are adding a property “Third Party Application ID” under Exchange service for third party application integration. The property is not required to be associated with any customer plan or user plan, it will be added as a common Exchange service property.

  1. Go to portal menu > Configuration > System Manager > Service Schema page, select and expand “Hosted Exchange” service;
  2. Expand Property Definition section, and select “Common” tab;
  3. Click “New Property”, enter the basic details of the new property, and Save. You also need to click on “Save” at the bottom of the service iFrame to be able to commit the cached changes to the database.

Basic  property definition screenshot

  1. Now you should see this new property in Exchange common properties list. Expand this property, and click “Advanced Settings” to further define how it will be accessed.
  2. Leave “Category” option as default. Although some services like Exchange have categories for properties, most custom properties do not belong to the built-in property categories.


  1. Under “Display this property on the following service screens”, check “Customer Interface” so that each time when provisioning Exchange service to a customer, the property can be set or updated along with other Exchange service properties. If “Sort Order” is not defined, it will appear on the top.


If the value should be set at user level when provisioning the service, then “User Interface” should be selected.

  1. Define the validation for the property: if it is a compulsory property for all customers to be provisioned with this service, check “A value must be specified for this property”; select validation type (default Text) and name from the lists.

 Custom validation can also be defined in CPSM, this will be discussed in a separate blog post.

  1. Each service property has allow “Modify”, “Read” only, or “Hidden” permissions at “Location” (Active Directory), “Reseller”, “Customer” and “User” hierarchy levels. With the selected permissions in the screenshot, we allow “Third Party Application ID” to be modifiable at customer service provisioning level or higher, but Read only (or hidden if no need to be visible) when provisioning the service to users so that they inherit the value set for the customer.
  2. Click Save at the bottom of the property’s frame and the service’s frame.

Testing and Result

After the above configurations, enter a value in the new “Third Party Application ID” field for a customer and provision Exchange.

  1. After the provisioning process has completed, re-expand the customer’s Exchange service, the value should be displayed correctly.
  2. Logon to the CPSM provisioning server, if MSMQ “cortexrequest” private queue has journal enabled prior to the provisioning, open Provisioning Manager tool, find the last “Customer Service Add” message block from the above provisioning request, the value of “ThirdPartyID” service property should have been sent to the provisioning engine correctly.


At this point, the value of the custom service property is ready to be passed to the third party application(s) by the CPSM provisioning engine via additional rules of calling external web service, API, scripts, and commands, etc. for further integration.

Since the property values are stored in the CPSM databases, they are retrievable for external billing integration.