private void processEntitlementNotification(final EntitlementNotificationKey key, final UUID tenantId, final InternalCallContext internalCallContext) { final Entitlement entitlement; try { entitlement = entitlementApi.getEntitlementForId(key.getEntitlementId(), internalCallContext.toTenantContext(tenantId)); } catch (final EntitlementApiException e) { log.error("Error retrieving entitlement for id " + key.getEntitlementId(), e); return; } if (!(entitlement instanceof DefaultEntitlement)) { log.error("Entitlement service received an unexpected entitlement class type {}" + entitlement.getClass().getName()); return; } final EntitlementNotificationKeyAction entitlementNotificationKeyAction = key.getEntitlementNotificationKeyAction(); try { if (EntitlementNotificationKeyAction.CHANGE.equals(entitlementNotificationKeyAction) || EntitlementNotificationKeyAction.CANCEL.equals(entitlementNotificationKeyAction)) { ((DefaultEntitlement) entitlement).blockAddOnsIfRequired(key.getEffectiveDate(), internalCallContext.toTenantContext(tenantId), internalCallContext); } else if (EntitlementNotificationKeyAction.PAUSE.equals(entitlementNotificationKeyAction)) { entitlementApi.pause(key.getBundleId(), key.getEffectiveDate().toLocalDate(), internalCallContext.toCallContext(tenantId)); } else if (EntitlementNotificationKeyAction.RESUME.equals(entitlementNotificationKeyAction)) { entitlementApi.resume(key.getBundleId(), key.getEffectiveDate().toLocalDate(), internalCallContext.toCallContext(tenantId)); } } catch (final EntitlementApiException e) { log.error("Error processing event for entitlement {}" + entitlement.getId(), e); } }