Introduction
An Application Agility variable is a string-valued variable the value of which is (a) set on the Zentitle licensing server on a per license code or per profile basis and is (b) propagated to a client machine when it activates or refreshes its license. This functionality allows you to have greater control and do "more" with your desktop-based applications. The Zentitle Licensing Service is "super" flexible with a centrally based 'update mechanism' that allows you to control, manage and change your apps in the field without sending out a new installer or binary.
Imagine "SaaS type" control for installed applications!
Now you can do practically anything you want - with central API control. This will mean lower complexity in development, less binaries, less hassle with installers, less patching and some very customer friendly ways to support, market and manage your products - making them more flexible and easier to support - we think you will benefit greatly from these concepts, plus the inherent flexibility allows you to come up with even more individually tailored ideas on how to use and benefit from this new Total Application Agility™ (TAA) option.
This functionality is based on using the Zentitle API calls from within your application, allowing you to control when you wish to refresh the fields of data within the application. The data is refreshed to the client periodically (Depending on the set client lease period) for online end users, or needs to be refresh manually for offline end users.
The data stored in the remote application will be updated based on the data you have stored on the Zentitle server-side.You can control practically any part of your application simply and with a minimum of effort.
Applications for TAA
Imagine the exciting options now open to you with a single function call:
- Cross-sell, up-sell or add-on features based on your own criteria, with multi-level controls - way more flexibly than anything else on the market
- Control maintenance updates and related features e.g. downgrade features until maintenance renewals paid up, or pop-up a reminder and pay link
- Deploy an update with new features, new UX additions, colors, logo or other changes to the user experience
- Setting or changing the user data embedded into your app e.g. the name and address of the licensed user, version, point release, and product details
- Updating remote help or localization files
- Storing hardware (e.g. printer) serial numbers to limit the hardware available to the client app
- News feeds and any form communications pushed to the user you want
- It even works with "offline" users of our certificates activation process
Here are examples of the power of Total Application Agility™:
Example #1: Zentitle's Total Application Agility™ allows ISVs to use Zentitle as a transport for any type of information. If a company wants to test how to best position a new feature or function for maximum adoption, it may be advantageous to dynamically control the text that is displayed. Using Zentitle's Total Application Agility, text or images in the application can be determined/transmitted at License Activation, allowing complete control of the User Experience. This could be as simple as Menu Names and Text or as powerful as pricing and billing policies.
Example #2: Zentitle's Total Application Agility™ allows ISVs to use Zentitle as a means for managing billing. By storing any amount of billing information within Zentitle's secure framework, said information can be accessed from within the application in the course of renewals, upgrades, or when offering support. Information can be customized by channel, client, or even user! Using Zentitle's Total Application Agility allows ISVs to define an unlimited amount of data that can be transmitted at the time of activation and subsequently accessed from within the application.
Example #3: Zentitle's Total Application Agility™ allows ISVs to easily tailor the support experience with little to no effort. Imagine being able to display personalized support information within an application by using Zentitle's "data refresh" process as a means for transmitting news, support contacts, or any other component critical to customer care.
Getting started
To get started please ensure you have the credentials to hand you got sent with your trial or account purchase and proceed as below. 1Login to my.nalpeiron.com
Setting up TAA fields
1With the "product toolbar" displayed you now edit a product from the list (i.e. the trial product provided or one of the products you have purchased) that requires configuring.
2Then, click the "wrench" icon to give you the setup options on your trial product.
3Choose Setup -> configure
4Choose "advanced options"
5Choose "total application agility" tab
- Once you are logged in and you are working on a specific product within the advanced settings you can add or edit your TAA fields.
- Click on "add a new TAA field" which gives you a pair of user-defined fields to edit.
- Complete these fields:
- Name the entry to a name that makes sense to you and your company
- Enter the default value you wish to populate your remote application with e.g. Product Title
- Add more fields as required and SAVE PERIODICALLY until you have all the data you wish to embed in a license model for this product.
- Click save and the dialog at the top of the page will alert you this has been successful.
- To delete an entry select the "delete" button right of the entry.
Total Application Agility API
| Function name | Parameters | Description |
|---|---|---|
| NSLGetUDFValue | char *pdataName,char **pdataValue | Gets the "value" associated with the Application Agility variable - also known as a UDF (User Defined Field). UDFValue should be freed with NSLFee (See NSL Reference) |
| int NSLFree | void *memptr | The NSAFree functions is available to free any memory allocated by the NSA library. |
System Application Agility Variables
There are special Application Agility variables which are available client side. Their values are refreshed during a successful call to NSLGetLicense rather than being set e.g. on the dashboard or using webservices. These values returned are a current snapshot and can change at any point in time.) However like any other Application Agility variable, their values can be obtained by calling NSLGetUDFValue, with the system variable name see below. These variables are not available for Trial Licenses.
| System Variable | Description |
|---|---|
| $CurrentActivations | Returns the total current number of activations for the current activated license code. |
| $ActivationsAllowed | Returns the number of allowed activations for the current activated license code. |
| $UserActCount | Account-Based Licensing (ABL) only: returns the number of seats activated by the current user. If not using ABL, this returns the value of 0. |
| $FeatureList | For the current license code, returns the code/name, the status and the type of each product feature and non-system application agility variable in XML format. |
| $CurrentLiveActivations | Returns the current number of activations for the current activated license code for which the lease has not expired. |
$FeatureList Example
The following shows an example XML return for the $FeatureList system variable.
<featurelist number="7">
<feature name="ABLCT" status="FEATSTATE_DEACTIVATED" type="FEATTYPE_TOKEN"/>
<feature name="ABLG1" status="FEATSTATE_DEACTIVATED" type="FEATTYPE_FLOAT"/>
<feature name="ABLG2" status="FEATSTATE_DEACTIVATED" type="FEATTYPE_ELEMPOOL"/>
<feature name="ABLNF" status="FEATSTATE_DEACTIVATED" type="FEATTYPE_FEAT"/>
<feature name="LCSEC" status="FEATSTATE_DEACTIVATED" type="FEATTYPE_SECSTORE"/>
<feature name="TAATEST1" status="FEATSTATE_ACTIVATED" type="FEATTYPE_UDF"/>
<feature name="TAATEST2" status="FEATSTATE_ACTIVATED" type="FEATTYPE_UDF"/>
</featurelist>
- The value of the 'number' attribute of the 'featurelist' node is equal to the number of features plus the number of non-system application agility variables that have been defined for the current product.
- The 'name' attribute is, in the case of a feature, the 5 character feature code. In the case of an application agility variable, it is simply the name of this variable.
- There are two possible values of the 'status' attribute: 'FEATSTATE_ACTIVATED' and 'FEATSTATE_DEACTIVATED'. For features, these correspond to whether or not the feature has been been activated or deactivated on the current license code. Application agility variables are always activated and so the status of these will always be 'FEATSTATE_ACTIVATED'.
- The 'type' attribute gives the feature type or indicates that it is an application agility variable, with possible values given by:
| Type | Description |
|---|---|
| FEATTYPE_FEAT | Normal Feature |
| FEATTYPE_FLOAT | Floating Feature |
| FEATTYPE_ELEMPOOL | Element Pool |
| FEATTYPE_TOKEN | Consumption Token |
| FEATTYPE_SECSTORE | Secure Store |
| FEATTYPE_UDF | Application Agility Variable |