Skip to main content

Marketplace app licensing

Level: intermediate

The purpose of licensing is to control the use of paid Marketplace apps. Learn more: Licensing (user documentation).

If Creatio has no licenses uploaded for a product, Creatio demo mode is turned on. The entirety of app functionality is available in this mode. However, users can add only up to 1000 records to each database table.

General procedure to license paid Marketplace app:

  1. Generate the index of licensed elements. Read more >>>
  2. Define the license type. Read more >>>
  3. Send data obtained on previous steps to the Creatio Marketplace support (marketplace@creatio.com). The developer must send data via the Developer profile when publishing the Marketplace app. Instructions: Steps to publish the Marketplace app.
  4. Creatio Marketplace support generates licenses for the Marketplace app based on the received data.

The developer must take steps 1–2 when developing the Marketplace app.

1. Generate the index of licensed elements

The licensed elements are as follows.

  • Licensed objects. Names of custom objects added to the Marketplace app. Licensed objects are any custom objects, for example, section, detail, or lookup objects.

  • Functionality-licensing operations. Names of operations added to the Marketplace app logic to verify the availability of a license for specific functionality. For example, an additional action was added to a base Creatio section. The action must be connected to the licensed operation. When the action is called, the app program logic verifies the license availability. Based on the result, Creatio executes or interrupts the functionality.

  • Component-licensing operations. Available for Creatio version 8.0.10 and later. Names of operations added to the descriptor.json file to verify the availability of a license for custom Freedom UI component. The descriptor.json file stores the package properties.

    Add a single custom Freedom UI component to a single package. To set the package that contains the licensed component as a licensed package:

    1. Download the package that contains the Marketplace app functionality.

    2. Extract the *.zip archive that contains the Marketplace app packages using the Clio utility. Instructions: Official vendor documentation.

    3. Edit the package dependencies.

      1. Open the ...\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\SomePackageName\descriptor.json file.

      2. Add the array property to the LicOperations object.

      3. Fill out the package properties.

        Property

        Property description

        Property example

        Code

        Instructions: Add a configuration element (Name column). Change the default developer prefix to the custom value. Creatio Marketplace forbids to use the Usr prefix and codes without prefix.

        MrktTimerComponent

        Name

        Instructions: Add a configuration element (Title column). Must correspond to the component functionality and be understandable for end users.
        Creatio uses the Name property value in the notification when a user installs a package that includes a licensed component for which they do not have a license. The notification pattern is as follows: You have no license for the following components: “SomeComponentName” (SomePackageName), ... . Contact the system administrator to receive the license. Otherwise, access to the components will be forbidden., where SomeComponentName is the Name property value.

        Timer

    4. Save the changes.

    View the example of the descriptor.json file below.

    descriptor.json file
    {
    "Descriptor": {
    ...,
    "LicOperations": [
    {
    "Code":"ContactMiniCard.Use",
    "Name": "Contact minicard"
    },
    {
    "Code":"TimerComponent.Use",
    "Name": "Timer"
    }
    ]
    }
    }

The license can include one or more licensed elements. Make sure the licensed elements meet the requirements. Instructions: Requirements for published Marketplace app resources. The licensed elements do not depend on the license type.

2. Define the license type

Creatio provides the following license types:

  • Personal licenses. Grant access to the app for specific users. Bound to the user account and cannot be used by other users. The system administrator can redistribute licenses among users at any time. Instructions: Distribute or recall licenses for multiple users at any time.
  • Server licenses. Grant access to the app without binding access to specific users. All Creatio users that have the corresponding permissions have access to the licensed functionality.

The Marketplace app developer can contact Creatio Marketplace support (marketplace@creatio.com) to find out the number of paid and granted licenses.

The licensed options of the Marketplace app depend on the license type and licensed element. View the licensed options of the Marketplace app in the table below.

Licensed element

Marketplace app type

Subscription type

Personal license

Objects

New Creatio section.

Paid per user that works with the section.

Functionality-licensing operations

Connector to an external service, for example, a telephony connector.

Paid per user that can access to the service. For example, access to a telephony connector is paid per individual user.

Objects and/or functionality-licensing operations

Section with records that use connectors to various external services.

Paid per user that can access the section, and paid per service connector. For example, the Requests section was improved. The section is integrated with an external system that registers requests. The customer pays for access to the section functionality per user.

Server license

Objects

New Creatio section.

Fixed price regardless of the number of users that work with the section.

Functionality-licensing operations

Connector to an external service, for example, web chat that registers leads or requests in Creatio.

Fixed price regardless of the number of users that have access to the service.

Component-licensing operations

Freedom UI component

Fixed price regardless of the number of users that work with the Freedom UI component.

Important

Do not use personal and server licenses that control the same objects and operations at the same time.

The license lasts for 365 days regardless of the type. The license expiration date is specified in the license and controlled by Creatio.

You can verify the license expiration date in the following ways:

  • If the licensed objects or component-licensing operations are included in the license, you do not need to implement the license availability verification. This verification is performed using out-of-the-box Creatio tools. The name of the licensed object starts with the prefix specified in the Developer prefix field of the Developer profile. Learn more: Prepare to develop a Marketplace app.
  • If the functionality-licensing operations are included in the license, implement the availability verification for the operation license in the Marketplace app source code.
Important

The schema source code can be read and replaced. Instructions: Replace configuration elements. Therefore, we do not recommend implementing the availability verification for the operation license in configuration element schemas as this option is insecure. Use the licensed objects to determine the license expiration date instead. We recommend implementing the availability verification for the operation license in an external assembly. Instructions: Plagiarism-proof the source code of a Marketplace app.

You can implement the license availability verification in the following ways:

  • in the back-end
  • in the front-end

To verify the availability of the operation license in the back-end, use the following methods of the Terrasoft.Core.LicHelper class:

  • GetHasOperationLicense(string sysPackageOperationCode). If the license is found, returns true. Otherwise returns false.
  • CheckHasOperationLicense(string sysPackageOperationCode). If the license is found, returns true. Otherwise generates the LicException exception.

Where the sysPackageOperationCode is a string parameter that contains the name of the licensed operation. Specify this name in the Developer profile when publishing the Marketplace app. Instructions: Steps to publish the Marketplace app.

UserConnection.LicHelper.GetHasOperationLicense("MyMarketplaceApplication.Use");

To implement the license availability verification in the front-end:

  • Implement the custom configuration web service that verifies the license availability.
  • Add the program logic of the request to the implemented web service.

Source code

descriptor.json file
{
"Descriptor": {
"UId": "180ef164-aa08-43fb-9a07-d64395605176",
"PackageVersion": "8.0.10",
"Name": "Administration",
"ModifiedOnUtc": "\/Date(1428053416000)\/",
"Maintainer": "Terrasoft",
"DependsOn": [
{
"UId": "96a69df1-1ad1-4edb-80a8-1558ddbac05b",
"PackageVersion": "8.0.10",
"Name": "ConfigurationGrid"
}
],
"LicOperations": [
{
"Code":"ContactMiniCard.Use",
"Name": "Contact minicard"
},
{
"Code":"TimerComponent.Use",
"Name": "Timer"
}
]
}
}

See also

Prepare to develop a Marketplace app

Replace configuration elements

Plagiarism-proof the source code of a Marketplace app

Requirements for published Marketplace app resources


Resources

Creatio licensing documentation

Marketplace updates