# Quick-Migration Guide (v2 -> v3)

## Introduction

When you already have a V2 integrated this page will provide you with some easy steps to quickly migrate to the V3 of the Trust1Connector. Migration from the v2 to the v3 of the Trust1Connector can be done in 2 ways;

1. Integration of the API
2. Integration via the deprecated Javascript SDK

Both are viable integrations. When integrating via the API you have more control over the functionality and the dependencies used.

## Update a v2 application to v3

For updating your web application first of all you need to use the new Javascript SDK. After this there are some differences in using the SDK from the v2.

### Configuration

The configuration from the v2 has changed, we simplified this.

The v2 had the following configuration options;

```javascript
export class GCLConfigOptions {
    constructor(public gclUrl?: string,
                public gwOrProxyUrl?: string,
                public apiKey?: string,
                public gwJwt?: string,
                public tokenExchangeContextPath?: string,
                public ocvContextPath?: string,
                public dsContextPath?: string,
                public dsFileContextPath?: string,
                public pkcs11Config?: Pkcs11ModuleConfig,
                public agentPort?: number,
                public implicitDownload?: boolean,
                public forceHardwarePinpad?: boolean,
                public sessionTimeout?: number,
                public consentDuration?: number,
                public consentTimeout?: number,
                public syncManaged?: boolean,
                public osPinDialog?: boolean,
                public containerDownloadTimeout?: number,
                public localTestMode?: boolean,
                public lang?: string,
                public providedContainers?: T1CContainerid[]) {
    }
}
```

With the v3 this is significantly simplified to the following;

```javascript
class T1CConfigOptions {
  constructor(
    public t1cApiUrl?: string,
    public t1cApiPort?: string,
    public t1cProxyUrl?: string, // deprecated
    public t1cProxyPort?: string, // deprecated
    public jwt?: string,
    public applicationDomain?: string, // "rmc.t1t.be"
  ) {}
}
```

| V2 config option         | V3 config option  | Description                                                                                                                                                |
| ------------------------ | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| gclUrl / gwOrProxyUrl    | t1cApiUrl         | in the V2 this was https://localhost:10443 while in the V3 this will be https://t1c.t1t.io (for T1T)                                                       |
|                          | t1cApiPort        | is the port where the webserver is listening on, in the v2 this is 10443 but in the v3 by default(T1T) this is 51983                                       |
|                          | t1cProxyPort      | This value represents the port where the Proxy webserver is listening on. By default this is 51983 **(obsolete)**                                          |
|                          | t1cProxyUrl       | Similar to the api url this is the URL where the proxy used in shared environment is running on. This is by default the same as the API url **(obsolete)** |
|                          | applicationDomain | Host of the web application the Trust1Connector is being used on. This property is used to make sure no [Consent](consent) collisions can happen           |
| apiKey                   | /                 |                                                                                                                                                            |
| gwJwt                    | jwt               | JWT token used for authentication of the web application towards the Trust1Connector. This must be retrieved from the web applications backend             |
| tokenExchangeContextPath | /                 |                                                                                                                                                            |
| ocvContextPath           | /                 |                                                                                                                                                            |
| dsContextPath            | /                 | in v2 this was the context path for the DS based on the gwOrProxyUrl                                                                                       |
| dsFileContextPath        | /                 |                                                                                                                                                            |
| pkcs11Config             | /                 |                                                                                                                                                            |
| agentPort                | /                 |                                                                                                                                                            |
| implicitDownload         | /                 |                                                                                                                                                            |
| forceHardwarePinpad      | /                 |                                                                                                                                                            |
| sessionTimeout           | /                 |                                                                                                                                                            |
| consentDuration          | /                 |                                                                                                                                                            |
| syncManaged              | /                 |                                                                                                                                                            |
| osPinDialog              | /                 | boolean which depicts the default os pin dialog value                                                                                                      |
| containerDownloadTimeout | /                 |                                                                                                                                                            |
| localTestMode            | /                 |                                                                                                                                                            |
| lang                     | /                 |                                                                                                                                                            |
| providedContainers       | /                 |                                                                                                                                                            |

### Initialisation

After you've created your configuration object you can do the initialisation of the Trust1Connector SDK. This has largely remained the same except for the error codes.

V2 example:

```javascript
config = new GCLLib.GCLConfig(configoptions);
    GCLLib.GCLClient.initialize(config).then(res => {
        client = res;
        core = client.core();
        console.log("GCLClient: ", res)
    }, err => {
        console.log("GCL error:", err)
    })
```

V3 example;

```javascript
config = new T1CSdk.T1CConfig(configoptions);
T1CSdk.T1CClient.initialize(config).then(res => {
    client = res;
    console.log("Client config: ", client.localConfig)
    core = client.core();

}, err => {
    errorHandler(err);
});
```

For more information regarding initialization we suggest the [Initialize page](initialize-trust1connector)
