code: public void onNotify(Notify ntfy,
  			SubscriptionClientChildSbbLocalObject subscriptionChild) {
  		// compile diff
  		if (ntfy.getStatus().equals(SubscriptionStatus.terminated)) {
  			try {
  				final String notifier = ntfy.getNotifier();
  				subscriptionChild.remove();
  				getParent()
  						.subscriptionTerminated(
  								(XDMClientChildSbbLocalObject) this.sbbContext
  										.getSbbLocalObject(),
  								notifier, ntfy.getTerminationReason());
  			} catch (Exception e) {
  				tracer.severe("Unexpected exception on callback!", e);
  			}
  		} else {
  			// cast is safe, cause we expect diff and check MIME
  			XcapDiff diff = null;
  			if (ntfy != null) {
  				try {
  					diff = (XcapDiff) xcapDiffJaxbContext.createUnmarshaller()
  							.unmarshal(new StringReader(ntfy.getContent()));
  				} catch (Exception e) {
  					tracer.severe("Failed to parse diff!", e);
  				}
  			}
  			getParent().subscriptionNotification(diff, ntfy.getStatus());
  		}
  
  	}
docs: SUBSCRIBE callbacks