Buggy code:
@ Inject public BeatrixListener ( @ Named ( BusModule . EXTERNAL_BUS_NAMED ) final PersistentBus externalBus , final InternalCallContextFactory internalCallContextFactory ) { } @ AllowConcurrentEvents @ Subscribe public void handleAllInternalKillbillEvents ( final BusInternalEvent event ) { } private BusEvent computeExtBusEventEntryFromBusInternalEvent ( final BusInternalEvent event , final InternalCallContext context ) { ObjectType objectType = null ; UUID objectId = null ; ExtBusEventType eventBusType = null ; switch ( event . getBusEventType ( ) ) { case ACCOUNT_CREATE : final AccountCreationInternalEvent realEventACR = ( ( AccountCreationInternalEvent ) ( event ) ) ; objectType = ObjectType . ACCOUNT ; objectId = realEventACR . getId ( ) ; eventBusType = ExtBusEventType . ACCOUNT_CREATION ; break ; case ACCOUNT_CHANGE : final AccountChangeInternalEvent realEventACH = ( ( AccountChangeInternalEvent ) ( event ) ) ; objectType = ObjectType . ACCOUNT ; objectId = realEventACH . getAccountId ( ) ; eventBusType = ExtBusEventType . ACCOUNT_CHANGE ; break ; case SUBSCRIPTION_TRANSITION : final SubscriptionInternalEvent realEventST = ( ( SubscriptionInternalEvent ) ( event ) ) ; objectType = ObjectType . SUBSCRIPTION ; objectId = realEventST . getSubscriptionId ( ) ; if ( ( ( ( ( realEventST . getTransitionType ( ) ) == ( SubscriptionBaseTransitionType . CREATE ) ) || ( ( realEventST . getTransitionType ( ) ) == ( SubscriptionBaseTransitionType . RE_CREATE ) ) ) || ( ( realEventST . getTransitionType ( ) ) == ( SubscriptionBaseTransitionType . TRANSFER ) ) ) || ( ( realEventST . getTransitionType ( ) ) == ( SubscriptionBaseTransitionType . MIGRATE_ENTITLEMENT ) ) ) { eventBusType = ExtBusEventType . SUBSCRIPTION_CREATION ; } else if ( ( realEventST . getTransitionType ( ) ) == ( SubscriptionBaseTransitionType . CANCEL ) ) { eventBusType = ExtBusEventType . SUBSCRIPTION_CANCEL ; } else if ( ( realEventST . getTransitionType ( ) ) == ( SubscriptionBaseTransitionType . PHASE ) ) { eventBusType = ExtBusEventType . SUBSCRIPTION_PHASE ; } else if ( ( realEventST . getTransitionType ( ) ) == ( SubscriptionBaseTransitionType . CHANGE ) ) { eventBusType = ExtBusEventType . SUBSCRIPTION_CHANGE ; } else if ( ( realEventST . getTransitionType ( ) ) == ( SubscriptionBaseTransitionType . UNCANCEL ) ) { eventBusType = ExtBusEventType . SUBSCRIPTION_UNCANCEL ; } break ; case ENTITLEMENT_TRANSITION : final EntitlementInternalEvent realEventET = ( ( EntitlementInternalEvent ) ( event ) ) ; objectType = ObjectType . BUNDLE ; objectId = realEventET . getBundleId ( ) ; if ( ( realEventET . getTransitionType ( ) ) == ( EntitlementTransitionType . BLOCK_BUNDLE ) ) { eventBusType = ExtBusEventType . BUNDLE_PAUSE ; } else if ( ( realEventET . getTransitionType ( ) ) == ( EntitlementTransitionType . UNBLOCK_BUNDLE ) ) { eventBusType = ExtBusEventType . BUNDLE_RESUME ; } break ; case INVOICE_CREATION : final InvoiceCreationInternalEvent realEventInv = ( ( InvoiceCreationInternalEvent ) ( event ) ) ; objectType = ObjectType . INVOICE ; objectId = realEventInv . getInvoiceId ( ) ; eventBusType = ExtBusEventType . INVOICE_CREATION ; break ; case INVOICE_ADJUSTMENT : final InvoiceAdjustmentInternalEvent realEventInvAdj = ( ( InvoiceAdjustmentInternalEvent ) ( event ) ) ; objectType = ObjectType . INVOICE ; objectId = realEventInvAdj . getInvoiceId ( ) ; eventBusType = ExtBusEventType . INVOICE_ADJUSTMENT ; break ; case PAYMENT_INFO : final PaymentInfoInternalEvent realEventPay = ( ( PaymentInfoInternalEvent ) ( event ) ) ; objectType = ObjectType . PAYMENT ; objectId = realEventPay . getPaymentId ( ) ; eventBusType = ExtBusEventType . PAYMENT_SUCCESS ; break ; case PAYMENT_ERROR : final PaymentErrorInternalEvent realEventPayErr = ( ( PaymentErrorInternalEvent ) ( event ) ) ; objectType = ObjectType . PAYMENT ; objectId = realEventPayErr . getPaymentId ( ) ; eventBusType = ExtBusEventType . PAYMENT_FAILED ; break ; case PAYMENT_PLUGIN_ERROR : final PaymentPluginErrorInternalEvent realEventPayPluginErr = ( ( PaymentPluginErrorInternalEvent ) ( event ) ) ; objectType = ObjectType . PAYMENT ; objectId = realEventPayPluginErr . getPaymentId ( ) ; eventBusType = ExtBusEventType . PAYMENT_FAILED ; break ; case OVERDUE_CHANGE : final OverdueChangeInternalEvent realEventOC = ( ( OverdueChangeInternalEvent ) ( event ) ) ; objectType = ObjectType . ACCOUNT ; objectId = realEventOC . getOverdueObjectId ( ) ; eventBusType = ExtBusEventType . OVERDUE_CHANGE ; break ; case USER_TAG_CREATION : final UserTagCreationInternalEvent realUserTagEventCr = ( ( UserTagCreationInternalEvent ) ( event ) ) ; objectType = ObjectType . TAG ; objectId = realUserTagEventCr . getTagId ( ) ; eventBusType = ExtBusEventType . TAG_CREATION ; break ; case CONTROL_TAG_CREATION : final ControlTagCreationInternalEvent realTagEventCr = ( ( ControlTagCreationInternalEvent ) ( event ) ) ; objectType = ObjectType . TAG ; objectId = realTagEventCr . getTagId ( ) ; eventBusType = ExtBusEventType . TAG_CREATION ; break ; case USER_TAG_DELETION : final UserTagDeletionInternalEvent realUserTagEventDel = ( ( UserTagDeletionInternalEvent ) ( event ) ) ; objectType = ObjectType . TAG ; <START_BUG> objectId = realUserTagEventDel . getObjectId ( ) ; <END_BUG> eventBusType = ExtBusEventType . TAG_DELETION ; break ; case CONTROL_TAG_DELETION : final ControlTagDeletionInternalEvent realTagEventDel = ( ( ControlTagDeletionInternalEvent ) ( event ) ) ; objectType = ObjectType . TAG ; objectId = realTagEventDel . getTagId ( ) ; eventBusType = ExtBusEventType . TAG_DELETION ; break ; case CUSTOM_FIELD_CREATION : final CustomFieldCreationEvent realCustomEveventCr = ( ( CustomFieldCreationEvent ) ( event ) ) ; objectType = ObjectType . CUSTOM_FIELD ; objectId = realCustomEveventCr . getCustomFieldId ( ) ; eventBusType = ExtBusEventType . CUSTOM_FIELD_CREATION ; break ; case CUSTOM_FIELD_DELETION : final CustomFieldDeletionEvent realCustomEveventDel = ( ( CustomFieldDeletionEvent ) ( event ) ) ; objectType = ObjectType . CUSTOM_FIELD ; objectId = realCustomEveventDel . getCustomFieldId ( ) ; eventBusType = ExtBusEventType . CUSTOM_FIELD_DELETION ; break ; default : } final TenantContext tenantContext = internalCallContextFactory . createTenantContext ( context ) ; final UUID accountId = getAccountId ( event . getBusEventType ( ) , objectId , objectType , tenantContext ) ; return eventBusType != null ? new DefaultBusExternalEvent ( objectId , objectType , eventBusType , accountId , tenantContext . getTenantId ( ) , context . getAccountRecordId ( ) , context . getTenantRecordId ( ) , context . getUserToken ( ) ) : null ; } private UUID getAccountId ( final BusInternalEventType eventType , @ Nullable final UUID objectId , final ObjectType objectType , final TenantContext context ) { } }

Fix:
objectId = realUserTagEventDel . getTagId ( ) ;