# First customer activation


Use the Node sample to complete your first customer activation and write a real CSV file. If your app uses another language, follow its sample with the same sequence.

[Java](/en/samples/java/) · [C#](/en/samples/csharp/) · [Python](/en/samples/python/)

## 1. Install the sample and prepare inputs

Download and extract the Node sample. Run npm install in the extracted directory. Follow the installation guide to obtain the product UUID, public key, API URL and customer-owned license.

[Download and configure the Node sample](/en/samples/node/) · [Prepare test inputs](/en/start/install/)

## 2. Open customer approval

```bash
node main.mjs activation-start
```

Open the returned portalUrl in the system browser. Confirm the app name and device name, sign in as the customer, select a license and approve the confirmation dialog. The app does not collect the customer password.

## 3. Receive the approval result

```bash
node main.mjs activation-poll
```

Before approval, the result is pending. After approval, the SDK receives and applies the signed response. A successful application has status=applied and a valid result. If the status is application_failed, inspect the error and fix the application step.

## 4. Verify the actual feature

```bash
node main.mjs activation-status
node main.mjs activation-export output.csv
```

The license must be valid and demo_export must be true. Success creates output.csv with the sample rows below. With a valid license lacking the feature, export exits 3 and creates no new file.

```text
sensor,value
demo-a,21.5
demo-b,24.0
```

## When the app cannot connect

```bash
node main.mjs activation-request request.signox
```

Carry request.signox to a connected computer and import it at customer portal /activate. Approve there, save activation.signox, and carry it back:

```bash
node main.mjs activation-apply activation.signox
```

This requires supported, enrolled device protection. Network grace only covers an installation that already received valid rights; it cannot replace first activation.

[Continue with failure and replacement tests](/en/guides/integration-checks/) · [Understand recovery](/en/guides/hwid/)
