# 1.23.0 -> 1.24.0

## Breaking changes

### New ConfigRegion Parameter

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

### Configuring Identity

From SDK 1.24, it is now essential to set the Identity as part of SDK initialization.&#x20;

**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:**

```swift
class InitializeSDK {
    init(completion: @escaping () -> ()) {
        try! initialize(
            Directories(root: sdkRootDirectory),
            configRegion: .EU,
            logLevel: .debug,
            tokenSignerFactory: { self.appTokenSigner }
        )
        
        // New Implementation
        let identity = Identity(apiKey: apiKey, externalReferenceID: uid)
        identity.setIdentity {
            // Proceed to the next step
            completion()
        }
    }
}
```

### Removal of Identity Parameter

The Identity parameter has been removed from the TripDetectionManager class.

**Example:**&#x20;

#### TripDetectionManager

```swift
// New Implementation
let tripDetectionManager = TripDetectionManager(
    uploadRoute: UploadRoute.anyNetwork,
    telemetryEvents: telemetryEvents,
    externalRecordProviders: [externalRecordProvider],
    features: features
)
```

#### 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](https://sdk.ims.tech/drivesync-portal).

```swift
// Updated initialization of ActivationService for example
let activationService = ActivationService()
```

### Update on AppMisuseManager&#x20;

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

```swift
let appMisuseService = AppMisuseManager(permissionManageable: permissionManager)
```

### Removing tdwpServerEnv from BluetoothDeviceProvider

&#x20;The `tdwpEnvUrl` will now be retrieved from the backend. Therefore, it no longer needs to be included it in the BluetoothDeviceProvider.<br>

```swift
// New Implementation
let bluetoothProvider = BluetoothDeviceProvider(
    wedgeRegex: try NSRegularExpression(pattern: pattern, options: [])
)
```
