* @return Konfigurationsbereich, passend zur Versorgungsdatei.
	 *
	 * @throws ConfigurationChangeException Falls kein neuer Konfigurationsbereich angelegt werden konnte.
	 */
	private ConfigurationArea assignConfigurationArea(ConfigurationAreaProperties property, ConfigurationControl configurationControl)
			throws ConfigurationChangeException {
		// Konfigurationsbereich aus der aktuellen Konfiguration auslesen
		ConfigurationArea configurationArea = configurationControl.getAllConfigurationAreas().get(property.getPid());

		if(configurationArea == null) {
			// es gibt noch keinen Bereich -> Pid des KV der Konfiguration mit der Pid des KV des Bereichs-Properties vergleichen
			if(!property.getAuthority().equals(_dataModel.getConfigurationAuthorityPid())) {
				final String errorMessage = "Der Konfigurationsverantwortliche '" + property.getAuthority() + "' des Konfigurationsbereichs '"
				                            + property.getPid() + "' entspricht nicht dem Konfigurationsverantwortlichen der Konfiguration '"
				                            + _dataModel.getConfigurationAuthorityPid() + "'";
				throw new IllegalArgumentException(errorMessage);
			}
			configurationArea = createConfigurationArea(property, configurationControl);
		}
		else {
			// Konfigurationsbereich gibt es bereits -> KV der Konfiguration mit dem KV des Bereichs vergleichen
			final ConfigurationAuthority areaAuthority = configurationArea.getConfigurationAuthority();
			final ConfigurationAuthority configurationAuthority = _dataModel.getConfigurationAuthority();
			if(configurationAuthority == null) {
				if(areaAuthority.getPid().equals(_dataModel.getConfigurationAuthorityPid())) {
					((ConfigDataModel)_dataModel).setConfigurationAuthority(areaAuthority);
				}
				else {
					final String errorMessage = "Der Konfigurationsverantwortliche '" + areaAuthority.getPid() + "' des Konfigurationsbereichs '"
					                            + configurationArea.getPid() + "' entspricht nicht dem Konfigurationsverantwortlichen der Konfiguration '"
					                            + _dataModel.getConfigurationAuthorityPid() + "'";
					throw new IllegalStateException(errorMessage);
				}
			}
			else {
				if(areaAuthority != configurationAuthority) {
					final String errorMessage = "Der Konfigurationsverantwortliche '" + areaAuthority.getPid() + "' des Konfigurationsbereichs '"
					                            + configurationArea.getPid() + "' entspricht nicht dem Konfigurationsverantwortlichen der Konfiguration '"
					                            + _dataModel.getConfigurationAuthorityPid() + "'";
					throw new IllegalStateException(errorMessage);
				}
			}
			checkConfigurationArea(property, configurationArea);
		}
		// Info überprüfen
		if(_objectDiffs.isInfoDifferent(configurationArea.getInfo(), property.getInfo()) && _objectDiffs.isInfoProcessable(
				configurationArea.getInfo(), property.getInfo()
		)) {
			setInfo(configurationArea, property.getInfo());
		}
		// KonfigurationsÄnderungen überprüfen, ob der Datensatz geändert werden kann.
		if(!_objectDiffs.isConfigurationAreaChangeInformationProcessable(property.getConfigurationAreaChangeInformation(), configurationArea)) {
			throw new ConfigurationChangeException(
					"Die Konfigurationsänderungen können nicht am Konfigurationsbereich " + configurationArea.getPidOrNameOrId() + " geändert werden."
			);
		}
		// Darf hier nicht mehr gemacht werden, weil die richtige Versionsnummer für die Aktualisierung der Konfigurationsänderungseinträge
		// noch nicht feststeht.
		// setConfigurationAreaChangeInformation(property, configurationArea);

		// die Zeiten, wann sich ein Datensatz geändert oder ein Objekt erzeugt wurde, müssen initialisiert werden
		((ConfigConfigurationArea)configurationArea).initialiseTimeOfLastChanges();
		return configurationArea;
	}