void setConfigurationData(SystemObject systemObject, AttributeGroupUsage atgUsage, Data data) throws ConfigurationChangeException {

		try {
			final ConfigurationRequester requester = getRequester();

			// Den Datensatz in ein byte-Array umwandeln.
			final byte[] dataAsByteArray;
			if(data != null) {
				// Prüfen ob das Data-Objekt einen ganzen Datensatz darstellt
				if(data.getAttributeType() != null) {
					throw new IllegalArgumentException(
							"Der zu speichernde Datensatz stellt keinen ganzen Datensatz dar sondern nur einen Teildatensatz vom Typ "
							+ data.getAttributeType().getPid()
					);
				}
				// Prüfen ob das Data-Objekt ein Datensatz der passenden Attributgruppe ist
				if(!data.getName().equals(atgUsage.getAttributeGroup().getPid())) {
					throw new IllegalArgumentException(
							"Die Attributgruppe des zu speichernden Data-Objekts (" + data.getName() + ") entspricht nicht der angegebenen Attributgruppe: "
							+ atgUsage.getAttributeGroup().getPid() + ")"
					);
				}
				// Prüfen, ob alle Attribute im Datensatz definiert sind
				if(!data.isDefined()) {
					// Der Datensatz kann nicht verschickt werden, weil mindestens ein Attribut den "undefiniert Wert" enthält
					throw new IllegalArgumentException("Der zu speichernde Datensatz enthält mindestens ein Attribut, dass nicht definiert ist: " + data);
				}
				final ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();
				final Serializer serializer = SerializingFactory.createSerializer(byteArrayStream);
				serializer.writeData(data);
				dataAsByteArray = byteArrayStream.toByteArray();
			}
			else {
				// Das leere byte-Array wird auf der Gegenseite als <code>null</code> interpretiert.
				dataAsByteArray = new byte[0];
			}
			requester.setConfigurationData(atgUsage, systemObject, dataAsByteArray);
			// Nach erfolgreicher Änderung des Datensatzes in der Konfiguration wird der neue Datensatz in den lokalen Cache eingetragen
			ConfigDataKey configDataKey = new ConfigDataKey(systemObject, atgUsage);
			if(data != null) {
				final Data dataCopy = data.createUnmodifiableCopy();
				_configDataValuesTable.put(configDataKey, dataCopy);
			}
			else {
				_configDataValuesTable.put(configDataKey, _noDataMarker);
			}
		}
		catch(IOException e) {
			// Fehler bei der Anfrage
			_debug.error("Anfrage kann nicht serialisiert werden", e);
			throw new IllegalStateException("Anfrage kann nicht serialisiert werden: " + e);
		}
		catch(RequestException e) {
			// Fehler beim versand der Anfrage. Etwas stimmt mit der Verbindung zum Datenverteiler nicht.
			final String errorMessage = "Kommunikationsproblem mit dem Datenverteiler, Attributgruppenverwendung: " + atgUsage;
			_debug.error(errorMessage, e);
			throw new IllegalStateException(errorMessage + e);
		}
	}