[migration]
### API Changes
#### Added Classes
  * com.inet.repor.Region

#### Added Methods
  * com.inet.report.BorderProperties  
    * isCloseBorderOnPageBreak()
    * getCloseBorderOnPageBreakFormula()
    * setCloseBorderOnPageBreak(boolean)
    * setCloseBorderOnPageBreakFormula(FormulaField)
  * com.inet.report.Element
    * isCloseBorderOnPageBreak()

#### Methods and Constants deprecated in version 10
The following list includes the methods that are deprecated in version 10 and should no longer be used. Please consult the API documentation of the individual methods for more information about newer methods to use instead.

  * com.inet.report.config.datasource.DataSourceConfiguration
    * checkConnection()

#### Removed Methods
The following list includes the methods that have been entirely removed in version 10 of i-net Crystal-Clear.

  * com.inet.report.Cache
    * isTypeClusterCache()
  * com.inet.report.LicenseKeyInfo
    * isCluster()
    * getGroupNumber()

#### Removed deprecated Methods and Constants
The following methods had been deprecated for longer than 2 major versions and have now been entirely removed in version 10 of i-net Crystal-Clear.

  * com.inet.report.AbstractFontElement
    * getBold()
    * getItalic()
    * getStrikeout()
    * getUnderline()
  * com.inet.report.AbstractLineElement
    * getExtendToBottomOfSectionWhenPrinting()
  * com.inet.report.AbstractValueElement
    * getAllowFieldClipping()
    * getReverseSignForDisplay()
  * com.inet.report.BorderProperties
    * getTightHorizontal()
    * setTightHorizontal(FormulaField)
  * com.inet.report.Chart
  * com.inet.report.ChartFormatProperties
    * getAllowFieldClipping()
    * getReverseSignForDisplay()
  * com.inet.report.CrossTabCell
    * getSubElements()
  * com.inet.report.DatabaseTables
    * getConvertDateTime()
    * isPasswordValid()
    * setConvertDateTime(int)
  * com.inet.report.Element
    * getCanGrow()
    * getCloseBorderOnPageBreak()
    * getDropShadow()
    * getSuppress()
    * getSuppressIfDuplicated()
    * getTextRotation()
    * getTightHorizontal()
    * setTextRotation(int)
    * setTightHorizontal(FormulaField)
  * com.inet.report.Engine
    * EXPORT_CSV_COM
    * EXPORT_CSV_COL
    * DEFAULT_PAPER_ORIENTATION
    * DEFAULT_PAPERSIZE
    * LANDSCAPE
    * pageSizes
    * PAPER_*
    * PATER_TABLOID
    * PORTRAIT
    * USERDEFINED_PAPER
    * getAcrossThenDown()
    * getFormatGroupsWithMultipleColumn()
    * getHorizontal()
    * getLabel*()
    * getMargin*()
    * getPaper*()
    * getVertical()
    * isFormatWithMultipleColumns()
    * setAcrossThenDown(boolean)
    * setData(ResultSet, boolean)
    * setFormatGroupsWithMultipleColumn(boolean)
    * setFormatWithMultipleColumns(boolean
    * setHorizontal(int)
    * setLabel*(...)
    * setMargin*(...)
    * setPaper*(...)
    * setVertical(int)
  * com.inet.report.FieldElement
    * getLineSpacing()
    * getLineSpacingType()
    * setLineSpacing(int)
    * setLineSpacingType(int)
  * com.inet.report.FontProperties
    * getBold()
    * getItalic()
    * getStrikeout()
    * getUnderline()
  * com.inet.report.ValueProperties
    * TWELF_HOURS
    * getAllowFieldClipping()
    * getReverseSignForDisplay()
  * com.inet.report.GeneralProperties
    * CENTER_ALIGN
    * DEFAULT_ALIGN
    * JUSTIFIED_ALIGN
    * LEFT_ALIGN
    * RIGHT_ALIGN
    * ROTATE_*
    * getCanGrow()
    * getCloseBorderOnPageBreak()
    * getCloseBorderOnPageBreakFormula()
    * getDefaultPromptValues()
    * getDropShadow()
    * getDropShadowFormula()
    * getKeepTogether()
    * getSuppress()
    * getSuppressIfDuplicated()
    * getTextRotation()
    * setCloseBorderOnPageBreak(boolean)
    * setCloseBorderOnPageBreakFormula(FormulaField)
    * setDropShadow(boolean)
    * setDropShadowFormula(FormulaField)
    * setTextRotation(int)
    * com.inet.report.Group
    * getInstanceId()
    * getParentGroup()
    * removeGroupDirectionFormula()
    * setHierarchicalGrouping(boolean, Field, Field, int)
    * setInstanceId(Field)
    * setParentGroup(Field)
  * com.inet.report.LineProperties
    * getExtendToBottomOfSectionWhenPrinting()
  * com.inet.report.Paragraph
    * getLineSpacingType()
    * setLineSpacingType(int)
  * com.inet.report.ParagraphProperties
    * EXACT_SPACING
    * MULTIPLE_SPACING
    * getLineSpacing()
    * getLineSpacingType()
    * setLineSpacing(int)
    * setLineSpacingType(int)
  * com.inet.report.PictureProperties
    * BOTTOM_ALIGN
    * CENTER_ALIGN
    * TOP_ALIGN
  * com.inet.report.PromptField
    * addDefaultValue(String,String)
    * addDefaultValue(Object,String)
    * getPromptValueDesciptions()
    * setDefaultPromptValues(Object[])
    * setDefaultPromptValues(String)
    * setDefaultValue(int,Object,String)
  * com.inet.report.ReportComponent
    * getKeepTogether()
  * com.inet.report.ReportProperties
    * getAcrossThenDown()
    * getDistinct()
    * getFormatGroupsWithMultipleColumn()
  * com.inet.report.SortField
    * removeSortDirectionFormula()
  * com.inet.report.Subreport
    * getOnDemand()
  * com.inet.report.SubreportProperties
    * getOnDemand()
  * com.inet.report.SummaryField
    * SUMMARY_CROSSTAB_ROW
    * SUMMARY_CROSSTAB_COLUMN

### New directory structure
The directory structure in the installation directory has been changed. The directory "crystalclear" has been replaced with 2 new directories: "client" and "core".

The directory "core" contains all library files of the root class path and the "lib" directory contains contains library files, which can be loaded dynamically.  The directory "client" contains resources for the i-net Crystal-Clear client, e.g. the new HTML parameter request dialog.

### Element border / shadow increase section height
If a report element has a border and/or shadow and the lower border of the report element is exactly on the lower edge of a section, then the height of this section is increased at runtime by the width of the border and / or shadow.

In previous versions, the border and/or shadow was painted into the next section. To use this behavior of the older versions with version 10, you need to set the value of the property "Compatibility Level" to "compliant to version 9.x".

### Section property "Suppress Blank section"
The behavior of the section property "Suppress Blank section" has been changed.
If this property is enabled, an emtpy section will be suppressed. A section is emtpy, if it does not contain dynamic data.

That means, the section will be suppressed if the following report elements does not contain any data:

  * all (database, formula, special, summary) fields
  * all fields embedded in text elements
  * all database pictures

and no chart, crosstab, Java Bean or subreport is displayed.

The following elements does not effect this property:

  * text elements without embedded fields
  * boxes
  * lines
  * pictures
  * section background.

### Property "Allow unknown Data Sources" added
For security reasons the property "Allow unknown Data Sources" has been added to the configuration category "General Options".

If this property is disabled, then it is not possible to execute reports containing an unknown datasource. A data source is unknown, if no data source configuration exists with this name on the report server. This will prevent that each user has the possibility to load data from external databases.

### New default value for "Max HTTP Requests"
Since version 10, the new default (and recommended) value for the property "[Max HTTP Requests](https://docs.inetsoftware.de/reporting/help/report-performance)" is 250. Because of a [bug in channel handling](http://bugs.sun.com/view_bug.do?bug_id=6546995) of various Java VMs, i-net Crystal-Clear report server now uses sockets instead of channels and therefore requires more threads. The previous default value of 8 would now actually decrease performance of the report server.

If the current value of this property is less than 50, then the setup increases it to 250 during the installation of version 10.

If the current value is already between 50 and 250, then it is necessary to manually set the value to 250 if this default is desired.

### Null values for string parameter fields supported
Single string parameter fields (prompts) which do not have any length limit now accept null in addition to an empty string. In the prompt dialog, they have a "no value" option which can be toggled on and off for the string prompt.

If you do not want to allow null values for string prompts, you can simply specify 0 as the minimum length of the string - note that in the i-net Designer, this is now the default setting when creating new string prompts.

### Authentication for Remote Interface has changed
Up to now the password form of the Remoter Interface appears, if report permissions and/or system permissions are enabled and no login script was specified in the configuration (see Security Guide for more details).

Since version 10, i-net Crystal-Clear supports several authentication methods. The property Login Type defines, how the user has to log into the system and where the permitted user names are administrated.

The default value of the Login Type is: Automatic. In this case, the server tries to request the login in the following order: External Webserver (URL of Login Script must be set), Windows Authentication (if the server is running on a Windows operating system), Internal Webserver, Master Password.

To use a specific authentication method, you need to select it in the Configuration Manager, property: Login Type in the category [System Permissions](https://docs.inetsoftware.de/reporting/help/security).

### Cluster of i-net Crystal-Clear Plus removed
The cluster feature of i-net Crystal-Clear Plus has been removed. Operating system or application server clusters should be used instead.

### Support for Crystal Reports 6
Reports created with Crystal Reports version 6 are no longer supported. If you have such reports, then you will have to open and save these reports either with a newer Crystal Reports version or with a previous version of i-net Designer.

[migration:de]
### API-Änderungen
#### Hinzugefügte Klassen
  * com.inet.repor.Region

#### Hinzugefügte Methoden
  * com.inet.report.BorderProperties  
    * isCloseBorderOnPageBreak()
    * getCloseBorderOnPageBreakFormula()
    * setCloseBorderOnPageBreak(boolean)
    * setCloseBorderOnPageBreakFormula(FormulaField)
  * com.inet.report.Element
    * isCloseBorderOnPageBreak()

#### Methoden und Konstanten, die in Version 10 veraltet sind
Die folgende Liste enthält die Methoden, die in Version 10 veraltet sind und nicht mehr verwendet werden sollten. Bitte konsultieren Sie die API-Dokumentation der einzelnen Methoden für weitere Informationen über neuere Methoden, die stattdessen verwendet werden sollten.

  * com.inet.report.config.datasource.DataSourceConfiguration
    * checkConnection()

#### Entfernte Methoden
Die folgende Liste enthält die Methoden, die in Version 10 von i-net Crystal-Clear vollständig entfernt wurden.

  * com.inet.report.Cache
    * isTypeClusterCache()
  * com.inet.report.LicenseKeyInfo
    * isCluster()
    * getGroupNumber()

#### Entfernte veraltete Methoden und Konstanten
Die folgenden Methoden waren länger als 2 Hauptversionen veraltet und wurden nun in Version 10 von i-net Crystal-Clear vollständig entfernt.

  * com.inet.report.AbstractFontElement
    * getBold()
    * getItalic()
    * getStrikeout()
    * getUnderline()
  * com.inet.report.AbstractLineElement
    * getExtendToBottomOfSectionWhenPrinting()
  * com.inet.report.AbstractValueElement
    * getAllowFieldClipping()
    * getReverseSignForDisplay()
  * com.inet.report.BorderProperties
    * getTightHorizontal()
    * setTightHorizontal(FormulaField)
  * com.inet.report.Chart
  * com.inet.report.ChartFormatProperties
    * getAllowFieldClipping()
    * getReverseSignForDisplay()
  * com.inet.report.CrossTabCell
    * getSubElements()
  * com.inet.report.DatabaseTables
    * getConvertDateTime()
    * isPasswordValid()
    * setConvertDateTime(int)
  * com.inet.report.Element
    * getCanGrow()
    * getCloseBorderOnPageBreak()
    * getDropShadow()
    * getSuppress()
    * getSuppressIfDuplicated()
    * getTextRotation()
    * getTightHorizontal()
    * setTextRotation(int)
    * setTightHorizontal(FormulaField)
  * com.inet.report.Engine
    * EXPORT_CSV_COM
    * EXPORT_CSV_COL
    * DEFAULT_PAPER_ORIENTATION
    * DEFAULT_PAPERSIZE
    * LANDSCAPE
    * pageSizes
    * PAPER_*
    * PATER_TABLOID
    * PORTRAIT
    * USERDEFINED_PAPER
    * getAcrossThenDown()
    * getFormatGroupsWithMultipleColumn()
    * getHorizontal()
    * getLabel*()
    * getMargin*()
    * getPaper*()
    * getVertical()
    * isFormatWithMultipleColumns()
    * setAcrossThenDown(boolean)
    * setData(ResultSet, boolean)
    * setFormatGroupsWithMultipleColumn(boolean)
    * setFormatWithMultipleColumns(boolean
    * setHorizontal(int)
    * setLabel*(...)
    * setMargin*(...)
    * setPaper*(...)
    * setVertical(int)
  * com.inet.report.FieldElement
    * getLineSpacing()
    * getLineSpacingType()
    * setLineSpacing(int)
    * setLineSpacingType(int)
  * com.inet.report.FontProperties
    * getBold()
    * getItalic()
    * getStrikeout()
    * getUnderline()
  * com.inet.report.ValueProperties
    * TWELF_HOURS
    * getAllowFieldClipping()
    * getReverseSignForDisplay()
  * com.inet.report.GeneralProperties
    * CENTER_ALIGN
    * DEFAULT_ALIGN
    * JUSTIFIED_ALIGN
    * LEFT_ALIGN
    * RIGHT_ALIGN
    * ROTATE_*
    * getCanGrow()
    * getCloseBorderOnPageBreak()
    * getCloseBorderOnPageBreakFormula()
    * getDefaultPromptValues()
    * getDropShadow()
    * getDropShadowFormula()
    * getKeepTogether()
    * getSuppress()
    * getSuppressIfDuplicated()
    * getTextRotation()
    * setCloseBorderOnPageBreak(boolean)
    * setCloseBorderOnPageBreakFormula(FormulaField)
    * setDropShadow(boolean)
    * setDropShadowFormula(FormulaField)
    * setTextRotation(int)
    * com.inet.report.Group
    * getInstanceId()
    * getParentGroup()
    * removeGroupDirectionFormula()
    * setHierarchicalGrouping(boolean, Field, Field, int)
    * setInstanceId(Field)
    * setParentGroup(Field)
  * com.inet.report.LineProperties
    * getExtendToBottomOfSectionWhenPrinting()
  * com.inet.report.Paragraph
    * getLineSpacingType()
    * setLineSpacingType(int)
  * com.inet.report.ParagraphProperties
    * EXACT_SPACING
    * MULTIPLE_SPACING
    * getLineSpacing()
    * getLineSpacingType()
    * setLineSpacing(int)
    * setLineSpacingType(int)
  * com.inet.report.PictureProperties
    * BOTTOM_ALIGN
    * CENTER_ALIGN
    * TOP_ALIGN
  * com.inet.report.PromptField
    * addDefaultValue(String,String)
    * addDefaultValue(Object,String)
    * getPromptValueDesciptions()
    * setDefaultPromptValues(Object[])
    * setDefaultPromptValues(String)
    * setDefaultValue(int,Object,String)
  * com.inet.report.ReportComponent
    * getKeepTogether()
  * com.inet.report.ReportProperties
    * getAcrossThenDown()
    * getDistinct()
    * getFormatGroupsWithMultipleColumn()
  * com.inet.report.SortField
    * removeSortDirectionFormula()
  * com.inet.report.Subreport
    * getOnDemand()
  * com.inet.report.SubreportProperties
    * getOnDemand()
  * com.inet.report.SummaryField
    * SUMMARY_CROSSTAB_ROW
    * SUMMARY_CROSSTAB_COLUMN

### Neue Verzeichnisstruktur
Die Verzeichnisstruktur im Installationsverzeichnis wurde geändert. Das Verzeichnis "crystalclear" wurde durch 2 neue Verzeichnisse ersetzt: "client" und "core".

Das Verzeichnis "core" enthält alle Bibliotheksdateien des Wurzelklassenpfades und das Verzeichnis "lib" enthält Bibliotheksdateien, die dynamisch geladen werden können.  Das Verzeichnis "client" enthält Ressourcen für den i-net Crystal-Clear-Client, z.B. den neuen HTML-Parameter-Abfragedialog.

### Elementumrandung / Schatten erhöhen die Ausschnittshöhe
Wenn ein Berichtselement eine Umrandung und/oder einen Schatten hat und der untere Rand des Berichtselements genau auf der Unterkante eines Abschnitts liegt, dann wird die Höhe dieses Abschnitts zur Laufzeit um die Breite der Umrandung und/oder des Schattens erhöht.

In früheren Versionen wurde die Umrandung bzw. der Schatten in den nächsten Abschnitt hinein gemalt. Um dieses Verhalten der älteren Versionen mit Version 10 zu nutzen, müssen Sie den Wert der Eigenschaft "Kompatibilitätsebene" auf "konform zu Version 9.x" setzen.

### Abschnittseigenschaft "Leeren Abschnitt unterdrücken"
Das Verhalten der Abschnittseigenschaft "Leeren Abschnitt unterdrücken" wurde geändert.
Wenn diese Eigenschaft aktiviert ist, wird ein leerer Abschnitt unterdrückt. Ein Abschnitt ist emtpy, wenn er keine dynamischen Daten enthält.

Das heißt, der Abschnitt wird unterdrückt, wenn die folgenden Berichtselemente keine Daten enthalten:

  * alle (Datenbank-, Formel-, Spezial-, Statistik-) Felder
  * alle in Textelemente eingebetteten Felder
  * alle Datenbankbilder

und kein Diagramm, keine Kreuztabelle, keine Java Bean und kein Teilbericht wird angezeigt.

Die folgenden Elemente haben keinen Einfluss auf diese Eigenschaft:

  * textelemente ohne eingebettete Felder
  * kästchen
  * zeilen
  * bilder
  * abschnitt Hintergrund.

### Eigenschaft "Unbekannte Datenquellen zulassen" hinzugefügt
Aus Sicherheitsgründen wurde in der Konfigurationskategorie "Allgemeine Optionen" die Eigenschaft "Unbekannte Datenquellen zulassen" hinzugefügt.

Wenn diese Eigenschaft deaktiviert ist, ist es nicht möglich, Berichte auszuführen, die eine unbekannte Datenquelle enthalten. Eine Datenquelle gilt als unbekannt, wenn keine Datenquellenkonfiguration mit diesem Namen auf dem Berichtsserver existiert. Damit wird verhindert, dass jeder Benutzer die Möglichkeit hat, Daten aus externen Datenbanken zu laden.

### Neuer Standardwert für "Max HTTP Requests"
Seit Version 10 ist der neue Standardwert (und empfohlene Wert) für die Eigenschaft "[Max HTTP Requests](https://docs.inetsoftware.de/reporting/help/report-performance)" 250. Aufgrund eines [Fehlers in der Kanalbehandlung](http://bugs.sun.com/view_bug.do?bug_id=6546995) verschiedener Java VMs verwendet der i-net Crystal-Clear Berichtsserver nun Sockets anstelle von Kanälen und benötigt daher mehr Threads. Der frühere Standardwert von 8 würde die Leistung des Berichtsservers nun tatsächlich verringern.

Wenn der aktuelle Wert dieser Eigenschaft kleiner als 50 ist, wird er bei der Installation von Version 10 auf 250 erhöht.

Liegt der aktuelle Wert bereits zwischen 50 und 250, muss der Wert manuell auf 250 gesetzt werden, wenn dieser Standardwert gewünscht ist.

### Nullwerte für String-Parameterfelder werden unterstützt
Einzelne String-Parameterfelder (Prompts), die keine Längenbegrenzung haben, akzeptieren jetzt neben einem leeren String auch Null. Im Eingabeaufforderungsdialog gibt es eine Option "kein Wert", die für die Eingabeaufforderung ein- und ausgeschaltet werden kann.

Wenn Sie keine Nullwerte für String-Prompts zulassen wollen, können Sie einfach 0 als Mindestlänge des Strings angeben - beachten Sie, dass dies im i-net Designer nun die Standardeinstellung beim Erstellen neuer String-Prompts ist.

### Authentifizierung für Remote Interface hat sich geändert
Bisher erschien das Passwort-Formular der Remoter Schnittstelle, wenn Berichtsberechtigungen und/oder Systemberechtigungen aktiviert sind und kein Login-Skript in der Konfiguration angegeben wurde (siehe Sicherheitsleitfaden für weitere Details).

Seit Version 10 unterstützt i-net Crystal-Clear mehrere Authentifizierungsmethoden. Die Eigenschaft Login-Typ definiert, wie sich der Benutzer am System anmelden muss und wo die erlaubten Benutzernamen verwaltet werden.

Der Standardwert für den Login-Typ ist: Automatisch. In diesem Fall versucht der Server, die Anmeldung in der folgenden Reihenfolge anzufordern: Externer Webserver (URL des Anmeldeskripts muss festgelegt werden), Windows-Authentifizierung (wenn der Server unter einem Windows-Betriebssystem läuft), Interner Webserver, Master-Passwort.

Um eine bestimmte Authentifizierungsmethode zu verwenden, müssen Sie diese im Konfigurationsmanager, Eigenschaft: Login Type in der Kategorie [System Permissions] (https://docs.inetsoftware.de/reporting/help/security).

### Cluster von i-net Crystal-Clear Plus entfernt
Die Cluster-Funktion von i-net Crystal-Clear Plus wurde entfernt. Stattdessen sollten Betriebssystem- oder Anwendungsserver-Cluster verwendet werden.

### Unterstützung für Crystal Reports 6
Berichte, die mit Crystal Reports Version 6 erstellt wurden, werden nicht mehr unterstützt. Wenn Sie solche Berichte haben, müssen Sie diese Berichte entweder mit einer neueren Crystal-Reports-Version oder mit einer früheren Version von i-net Designer öffnen und speichern.
