# Dynatrace Extension Migrator

Helps with moving the configurations of select Extensions 1.0 extensions to their 2.0 equivalents.

## Requirements

- Python 3.10+
- An API token:
  - Ust the 'Extension Development' token or provide the following scopes:
    - extensions.read
    - extensionConfigurations.read
    - extensionConfigurations.write

## Installation

`pip install dt-extension-migrator`

## Usage
Each supported EF1 extension has a subcommand e.g. `dt-ext-migrator remote-unix --help`

Each will have a similar set of commands for pulling the EF1 configurations and pushing the converted EF2 extensions to the Dynatrace environment.

### Environment details
You can specify the Dynatrace environment URL and API token either in the `--dt-url` and `--dt-token` options or in DT_URL and DT_TOKEN environment variables (recommended).

### Pulling configurations
When pulling EF1 configurations you can specify the output file (optional) and one or more "indexes" by specifying the `--index` option for each field you want to 'group' configurations on. For example, if you want to group just on the 'group' in the EF1 configuration you can run:

`dt-ext-migrator remote-unix pull --index group`

If you want to group by the group and the configured username you can run:

`dt-ext-migrator remote-unix pull --index group --index username`

You will have an Excel spreadsheet generated with a tab for each set of grouped dimensions you will be able to use when pushing the converted configs.

### Pushing configurations
Once you have the spreadsheet generated you can use this to convert and push the configurations to their EF2 equivalents.

`dt-ext-migrator remote-unix push --input-file .\custom.remote.python.remote_agent-export.xlsx --sheet group1-myuser --version 1.0.0 --ag-group ag_group-default`

### Tips:
 - The --ag-group option can be specified with or without the leading `ag_group-` prefix
 - Fields you should review/update manually will be the authentication (top-level monitoring configuration level is recommended) and the top-level 'group' setting if used

A summary will be printed after a successful push. E.g.:
```
2 endpoints will attempt to be added to the monitoring configuration.
Configs created successfully. Response: 200
Link to monitoring configuration: https://<environment>/ui/hub/ext/listing/registered/<extensionId>/fe14090c-4bfe-30b5-b88b-84a8e6f65607/read
```

The configuration will be disabled by default so you can review it, add authentication, and making any other needed chagnes before enabling.