public void triggerSubscribe(final boolean isSource, final TransactionDataDescription dataDescription, final Collection<InnerDataSubscription> subscriptions) throws OneSubscriptionPerSendData {
		if (_attributeGroup == null || _receiveAspect == null || _sendAspect == null) {
			throw new IllegalStateException("Das verwendete Datenmodell unterstützt keine Transaktionen.");
		}
		final long id = generateRequestId();
		try {
			sendBytes(
					_connection.getLocalDav(),
					id,
					isSource ? SUBSCRIBE_TRANSMITTER_SOURCE : SUBSCRIBE_TRANSMITTER_DRAIN,
					serializeTransactionSubscriptions(dataDescription, subscriptions),
					_connection.getLocalApplicationObject()
			);
		}
		catch(IOException e) {
			throw new IllegalStateException(e);
		}
		synchronized(_answerIdMap){
			while(!_answerIdMap.containsKey(id)){
				try {
					_answerIdMap.wait();
				}
				catch(InterruptedException e) {
					throw new IllegalStateException(e);
				}
			}
			final Result answer = _answerIdMap.get(id);
			if(answer.getRequestKind() != ANSWER_OK) {
				throw new OneSubscriptionPerSendData(new String(answer.getBytes()));
			}
		}
	}