Difference between revisions of "Service Properties"

From WHMCS Documentation

 
Line 1: Line 1:
<div class="docs-alert-info"><i class="fa fa-question-circle"></i> This page describes a feature available in version 7.2 and above</div>
+
<div class="docs-alert-info"><i class="fa fa-question-circle"></i>We added service properties in WHMCS 7.2.</div>
  
WHMCS 7.2 introduced the ability to associate Product Add-ons with Provisioning Modules.
+
In WHMCS 7.2 and later, you can associate [[Product Addons|product addons]] with provisioning modules.  
  
Many provisioning modules require storing of additional information relating to a product. To make it easier to work with this extra data, and to aide module developers, WHMCS 7.2 introduces the concept of Service Properties.
+
Many provisioning modules require storage of additional information relating to a product. Service properties are key/value pairs for a specific instance of a product or addon, and they facilitate storing and working with extra data. Service properties use custom fields to store this data in a consistent format that provisioning modules can access programmatically.
 
 
A Service Property is a key/value pair relating to a given instance of a product or add-on. Stored in custom fields, service properties allow module developers to interact with these fields in a simple programmatic way that is consistent for both products and add-ons.
 
  
 
===Using Service Properties===
 
===Using Service Properties===
  
A model instance (see https://developers.whmcs.com/advanced/db-interaction/) that represents the Service or Addon that an action is being performed against is passed to all module function invocations as part of the module parameters.
+
A [https://developers.whmcs.com/advanced/db-interaction/ model instance] that represents the service or addon that the module is performing an action against is passed to all module function invocations as part of the module parameters.
  
An example scenario of how this might be used can be seen below.
+
For example:
  
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
Line 51: Line 49:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
The 'save' method will lookup a custom field with the given name. If no existing field is found, a new custom field will be created to store the value.
+
The <tt>save</tt> method will look up a custom field with the given name. If it does not find an existing field, it will create a new custom field to store the value.
  
 
===Supported Fields===
 
===Supported Fields===
  
When using Service Properties against a Service (ie a directly created product, and not an add-on), sometimes a dedicated core field will be used rather than a custom field. This occurs for the following field names.
+
When using service properties against a service (for example, a directly-created product and not an addon), the system may use a dedicated core field rather than a custom field. This occurs for the following field names.
  
 
* Username
 
* Username
Line 68: Line 66:
 
* Last Update
 
* Last Update
  
Using these field names with an add-on will create a custom field.
+
Using these field names with an addon will create a custom field.

Latest revision as of 20:54, 3 May 2022

We added service properties in WHMCS 7.2.

In WHMCS 7.2 and later, you can associate product addons with provisioning modules.

Many provisioning modules require storage of additional information relating to a product. Service properties are key/value pairs for a specific instance of a product or addon, and they facilitate storing and working with extra data. Service properties use custom fields to store this data in a consistent format that provisioning modules can access programmatically.

Using Service Properties

A model instance that represents the service or addon that the module is performing an action against is passed to all module function invocations as part of the module parameters.

For example:

/**
 * @param array $params
 *
 * @return string
 */
function samplemodule_CreateAccount(array $params)
{
    try {
        // Perform actions to provision service and receive back an order number
        $orderNumber = '12345';

        // Save order number to Service Properties
        $params['model']->serviceProperties->save(['Order Number' => $orderNumber]);

        return 'success';
    } catch (\Exception $e) {
        return $e->getMessage();
    }
}

function samplemodule_SuspendAccount(array $params)
{
	try {
		// Utilise Service Properties to retrieve the Order Number
		$orderNumber = $params['model']->serviceProperties->get('Order Number');

		// Perform actions using order number here

		return 'success';
        } catch (\Exception $e) {
            return $e->getMessage();
        }
}

The save method will look up a custom field with the given name. If it does not find an existing field, it will create a new custom field to store the value.

Supported Fields

When using service properties against a service (for example, a directly-created product and not an addon), the system may use a dedicated core field rather than a custom field. This occurs for the following field names.

  • Username
  • Password
  • Domain
  • License Key
  • Dedicated IP
  • Disk Usage
  • Disk Limit
  • Bandwidth Usage
  • Bandwidth Limit
  • Last Update

Using these field names with an addon will create a custom field.