Customer portal activation
When a customer starts activation in your app, open the app-branded customer portal for device approval. The app does not retain the customer’s password; the SDK receives the approval and checks permission.
This guide covers browser approval, result handling and replacement-device review. For runnable code, start with the language SDK guide.
1. Create an activation request in the app
Section titled “1. Create an activation request in the app”Call ActivationClient.start() or the corresponding language method. The SDK registers the installation request and returns portalUrl and requestId.
Open the URL in a system browser. The portal loads the product name and logo from server data. Request IDs are public, but result retrieval secrets and installation credentials remain in the private state directory.
If registration fails, verify the API address and connectivity. Do not supply a portal URL as the API URL or replace the state directory on each launch.
2. Let the customer select a license
Section titled “2. Let the customer select a license”The customer signs in with their own customer account. Vendor and administrator credentials cannot approve as a customer. If no license is owned for this app, register the purchased key first.
Confirm the license and device name, choose activation and approve the dialog. The server reserves the device registration and issues a response. Each license has one active registration.
If another device is registered, its slot is not silently cleared. The portal offers a transfer request as described below.
3. Receive and apply the result
Section titled “3. Receive and apply the result”Call poll() at intervals of at least 3 seconds and distinguish these outcomes:
| Status | Meaning | App action |
|---|---|---|
pending | Customer approval or vendor review is unfinished. | Keep waiting and provide a way back to the approval page. |
applied with a valid result | The response was applied and verified on the device. | Check its feature permissions. |
application_failed | A response arrived but local validation failed. | Show the corresponding result.code and keep the feature locked. |
Issuance and device application confirmation are separate portal states. A connected SDK reports application; issuance alone does not prove that the device started using the license.
4. Check permission during use
Section titled “4. Check permission during use”Call validate() before protected operations and periodically while running. Require both valid=true and the feature value, such as demo_export=true for CSV export.
A connected registration can use signed cache and network-grace policy. Network grace starts from the last successful validation; expiry grace starts from license expiration. An installation that never completed connected activation has no network grace.
Suspension, revocation, expiration and signature errors are not connectivity failures. A later disconnection must not override an explicit denial with an old permission grant.
Recover on the same device
Section titled “Recover on the same device”Retained installation state and device keys can recover a registration. Linux’s trusted hardware anchor, the Windows platform key store and Mac device-wrapped key handles have different preservation conditions. Read device identity and recovery.
A matching device name or a new software installation ID is not proof of the old device identity. If the protected key cannot be recovered, request transfer review.
Transfer to another device
Section titled “Transfer to another device”- Create a request in the destination app installation.
- Select the existing license in the customer portal and explain the reason.
- The vendor opens the product’s device-transfer tab and checks the source registration.
- The vendor acknowledges that old offline rights or cached validations may remain, then approves or rejects with a reason.
- Approval issues only to the named destination request. The app applies it through polling or file import.
If the source registration changed while review was pending, an old request cannot be approved unchanged. Submit a new request for the current situation. Request, review, issuance and application confirmation are recorded in audit history.
Transfer approval is not proof that an old disconnected device stopped. A permanently disconnected grant cannot receive immediate remote revocation.
Activate through file transfer · Verify actual feature permission