[migration]
### Changes in program structure
The internal structure has changed. That is why the new plugin `reporting` (file: `plugins/reporting.zip`) is now mandatory to start i-net Clear Reports. Due to this change the previous startup scripts are no longer valid and have to be changed.

In addition, the i-net Designers plugin `remotedesigner.zip` has been renamed to `designer.zip`.

If manual changes were made to the startup scripts, they have to be updated accordingly:

* **Report Server**: the startup script has to be changed from
  * *From:* `~~java -cp core/ClearReports.jar com.inet.report.ClearReportsServer~~`
  * *To:* `java  -jar core/inetcore.jar`

* **i-net Designer**: the startup script has to be changed from
  * *From:* `~~java -jar core/designer.jar~~`
  * *To:* `java -jar core/inetcore.jar designer`

* **Command Line Parameters**: the startup has to be changed
  * *From:* `~~java -jar core/ClearReports.jar -forceImportConfig ...~~`
  * *To:* `java -cp core/inetcore.jar com.inet.config.recovery.RecoveryConfiguration -forceImportConfig ...`

* **Servlet Users of custom `*.war` or `*.ear`**: the servlet class has to be changed
  * *From:* ~~`com.inet.report.ReportServlet`~~
  * *To:* `com.inet.http.PluginDispatcherServlet`. See the reference `war` file for details.

Note: Developers who utilise API classes such as `com.inet.report.Engine` from the `reporting.jar` have to extract this jar file from the `reporting.zip` plugin now.

### Behavioural changes
* The Web API plugin has been updated with a new remote interface application which requires an additional permission. Every other previous Web API extension now requires this permission as well. Users with specific Web API permissions must be checked and reconfigured in the *Users and Groups Manager*.
* `com.inet.report.ReportServlet` has been removed. If there were extensions from the previously deprecated API, then they have to be moved to a plugin, registering an extension now.
* The formula functions `BytesFromFile` and `TextFromFile` now limits access to files to prevent a path traversal for normal users. The specified file must be from a valid report location, and if it is located in the file system then it must be from the same directory or subdirectory as the report itself.
* Custom implementations of `com.inet.report.PropertiesChecker` can not be added to the `lib` directory anymore. They have to be implemented using a plugin. See `<SDK>\\Documentation and Samples\\Plugin - Samples\\PropertiesChecker` for an example plugin.
* Custom implementations of `javax.servlet.Filter` can not be added to the `lib` directory anymore. They have to be implemented using a plugin. See `<SDK>\\Documentation and Samples\\Plugin - Samples\\ SessionDatasource` for an example plugin.
* The `com.inet.report.Listener` class has been removed. The web server has not been started by this class since version 15.x. The web server is started using the plugin `webserver.zip`.

[migration:de]
### Änderungen in der Programmstruktur
Die interne Struktur hat sich geändert. Deshalb ist das neue Plugin `reporting` (Datei: `plugins/reporting.zip`) nun zwingend erforderlich, um i-net Clear Reports zu starten. Durch diese Änderung sind die bisherigen Startskripte nicht mehr gültig und müssen geändert werden.

Außerdem wurde das i-net Designers Plugin `remotedesigner.zip` in `designer.zip` umbenannt.

Falls manuelle Änderungen an den Startup-Skripten vorgenommen wurden, müssen diese entsprechend aktualisiert werden:

* **Report Server**: das Startup-Skript muss geändert werden von
  * *Von:* `~~java -cp core/ClearReports.jar com.inet.report.ClearReportsServer~~`
  * *Zu:* `java -jar core/inetcore.jar`

* **i-net Designer**: Das Startskript muss geändert werden von
  * *Von:* `~~java -jar core/designer.jar~~`
  * *Zu:* `java -jar core/inetcore.jar designer`

* **Befehlszeilenparameter**: Der Start muss geändert werden
  * *Von:* `~~java -jar core/ClearReports.jar -forceImportConfig ...~~`
  * *Bis:* `java -cp core/inetcore.jar com.inet.config.recovery.RecoveryConfiguration -forceImportConfig ...`

* **Servlet-Benutzer von benutzerdefinierten `*.war` oder `*.ear`**: die Servlet-Klasse muss geändert werden
  * *From:* ~~`com.inet.report.ReportServlet`~~
  * *Zu:* `com.inet.http.PluginDispatcherServlet`. Siehe die Referenzdatei `war` für Details.

Hinweis: Entwickler, die API-Klassen wie `com.inet.report.Engine` aus der `reporting.jar` verwenden, müssen diese jar-Datei jetzt aus dem `reporting.zip`-Plugin entpacken.

### Änderungen im Verhalten
* Das Web-API-Plugin wurde mit einer neuen Remote-Interface-Anwendung aktualisiert, die eine zusätzliche Berechtigung erfordert. Jede andere bisherige Web-API-Erweiterung benötigt nun ebenfalls diese Berechtigung. Benutzer mit bestimmten Web-API-Berechtigungen müssen im *Benutzer- und Gruppenmanager* überprüft und neu konfiguriert werden.
* das `com.inet.report.ReportServlet` wurde entfernt. Wenn es Erweiterungen aus der zuvor veralteten API gab, dann müssen sie in ein Plugin verschoben werden, das jetzt eine Erweiterung registriert.
* Die Formelfunktionen `BytesFromFile` und `TextFromFile` schränken nun den Zugriff auf Dateien ein, um eine Pfadüberquerung für normale Benutzer zu verhindern. Die angegebene Datei muss aus einem gültigen Berichtsspeicherort stammen, und wenn sie sich im Dateisystem befindet, muss sie aus demselben Verzeichnis oder Unterverzeichnis wie der Bericht selbst stammen.
* Benutzerdefinierte Implementierungen von `com.inet.report.PropertiesChecker` können nicht mehr zum `lib` Verzeichnis hinzugefügt werden. Sie müssen über ein Plugin implementiert werden. Siehe `<SDK>\Dokumentation und Samples\\Plugin - Samples\\PropertiesChecker` für ein Beispiel-Plugin.
* Benutzerdefinierte Implementierungen von `javax.servlet.Filter` können nicht mehr zum `lib` Verzeichnis hinzugefügt werden. Sie müssen über ein Plugin implementiert werden. Siehe `<SDK>\Dokumentation und Samples\\Plugin - Samples\\ SessionDatasource` für ein Beispiel-Plugin.
* Die Klasse `com.inet.report.Listener` wurde entfernt. Der Webserver wird seit Version 15.x nicht mehr über diese Klasse gestartet. Der Webserver wird über das Plugin `webserver.zip` gestartet.

