# 1.23 -> 1.24

## Breaking changes

### New ConfigRegion Parameter

A new `setSdkApiConfigRegion` parameter is now required during SDK initialization. This addition is essential for proper configuration. SdkApiConfigRegion contains three regions: `.US`, `.CAN`, and `.EU`

**Example:**

```kotlin
if (!ImsSdkManager.isConfigured) {
    ImsSdkManager.setSdkConfiguration(
        this,
        ImsSdkManager.Builder()
                    .setApiKey(FirebaseIdentity.SAMPLE_API_KEY)
                    .setSdkFolder(File(this.filesDir, "sdk"))
                    .setTokenSigner(FirebaseIdentity.FirebaseTokenSigner::class.java)
                    .setHeartbeatInterval(SdkConfig.HEARTBEAT_INTERVAL)
                    .setSdkApiConfigRegion(SdkApiConfigRegion.CAN)
                    .setSyslogEnabled(true)
                    .build()
            )
}
```

### Configuring Identity

From SDK 1.24, it is now essential to set the Identity immediately after a successful login. You must wait for the result before proceeding.

**Important:** The Identity set in this step will be utilized in all Portal APIs, so it is crucial to configure it before making any Portal API calls.

**Example:**

```kotlin
// New Implementation
ImsSdkManager
       .setIdentity(context= context, Identity(apiKey, externalReferenceId:id))
       .collect{
              // Proceed to the next step
       }

```

### Removal of Identity Parameter

Identity requirement from all Portal API's has been removed. Portal APIs is now set immediately after a successful login.

**Example:**

#### Portal Services

The Identity parameter has been removed from all Portal APIs because it is expected to be set during SDK initialization. For more information on all Portal APIs, check [here](/drivesync-portal.md).

```kotlin
// Updated initialization of ActivationService for example
val activationService = ActivationService()
```

#### ImsTripManager

The Identity parameter has been removed enable call.

```kotlin
// Updated enable call
ImsTripManager().enable(context)
```

### Removing serverUrl

The `serverUrl` will now be retrieved from the backend. Therefore, it no longer needs to be included in the WedgeProvider<br>

```kotlin
// New Implementation
WedgeProvider(nameRegex = LIST_OF_REGEX, contex = context)
```

### Removing AppMisuseServerType

AppMisuseManager no longer requires server type. It will now be retrieved from the backend.

```kotlin
AppMisuseManager.enableAppMisuse(context = context)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sdk.ims.tech/migration-notes/android/older-releases/1.23-greater-than-1.24.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
