{"record":{"id":"05788e129588b198","repo":"basecamp/fizzy","slug":"fizzy-does-not-support-queenbee-initiated-ownershi","errorCode":null,"errorMessage":"Fizzy does not support Queenbee-initiated ownership transfers","messagePattern":"Fizzy does not support Queenbee-initiated ownership transfers","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"saas/app/models/account/queenbee_integration.rb","lineNumber":45,"sourceCode":"\n  def reactivate!\n    reactivate\n  end\n\n  def canceled?\n    cancelled?\n  end\n\n  def owner_name\n    users.owner.first&.name\n  end\n\n  def owner_email\n    users.owner.first&.identity&.email_address\n  end\n\n  def transferred_ownership!\n    raise NotImplementedError, \"Fizzy does not support Queenbee-initiated ownership transfers\"\n  end\n\n  def plan\n    \"FreeV1\"\n  end\n\n  def comped?\n    false\n  end\n\n  def comped=(value)\n  end\nend\n","sourceCodeStart":27,"sourceCodeEnd":59,"githubUrl":"https://github.com/basecamp/fizzy/blob/7aabe7458060d8a1759a53b7ede39e74e6c0b20d/saas/app/models/account/queenbee_integration.rb#L27-L59","documentation":"Account#transferred_ownership! from the Account::QueenbeeIntegration concern (SaaS build only) deliberately raises NotImplementedError. The Queenbee integration interface defines this callback for ownership transfers initiated on the Queenbee side, but hosted Fizzy only supports Fizzy-initiated transfers, so the method is a hard guard; saas/test/models/account/queenbee_integration_test.rb asserts that it raises. Hitting it means your code path tried to apply a Queenbee-initiated ownership change to a Fizzy account, which the product forbids.","triggerScenarios":"Calling account.transferred_ownership! on an Account that includes Account::QueenbeeIntegration. Typical call sites: a Queenbee event/webhook handler with a case that maps 'ownership transferred' events onto the integration methods, a generic sync job that invokes the whole interface, or a console/script exercising every callback.","commonSituations":"Implementing a handler for Queenbee account events (create, cancel, reactivate, transfer) and wiring every callback symmetrically; a Queenbee client gem upgrade that starts delivering a new ownership-transfer event type to existing Fizzy installs; a developer assuming the concern's public methods are all safe to call from the sync side.","solutions":["Do not call transferred_ownership!; the raise is intentional and test-asserted, so skip Queenbee-side transfer events in the dispatcher","Implement ownership transfer inside Fizzy (reassign the owning user), then notify Queenbee through the outbound client API instead of accepting the reverse direction","If you dispatch Queenbee events generically, filter the ownership-transfer event type in one place before method dispatch","If the raise reaches production logs from an existing sync job, treat it as a signal that a new Queenbee event type needs an explicit handler (skip or alert), not a bug to patch by implementing the method silently"],"exampleFix":"# before: symmetric Queenbee event dispatch includes the transfer callback\nwhen 'ownership.transferred' then account.transferred_ownership!\n\n# after: transfers are Fizzy-initiated only; acknowledge and skip\nwhen 'ownership.transferred'\n  Rails.logger.info('Skipping Queenbee-initiated transfer for account ' + account.queenbee_id.to_s)","handlingStrategy":"try-catch","validationCode":"return if event_name == 'ownership.transferred' # Fizzy raises NotImplementedError by design\naccount.transferred_ownership!","typeGuard":null,"tryCatchPattern":"begin\n  account.transferred_ownership!\nrescue NotImplementedError => e\n  Rails.logger.warn(e.message + ' for account ' + account.id.to_s)\nend","preventionTips":["Treat transferred_ownership! as deliberately unimplemented: the SaaS test suite asserts it raises","Filter unsupported Queenbee event types in one place before dispatching to integration methods","Perform ownership changes Fizzy-side, then push them to Queenbee via the outbound client","Keep an explicit list of handled Queenbee callbacks next to the dispatcher so new event types surface at review"],"tags":["fizzy","saas","queenbee","not-implemented","ownership-transfer"],"backgroundTag":"unsupported-operation-guard","analyzedSha":"7aabe7458060d8a1759a53b7ede39e74e6c0b20d","analyzedAt":"2026-08-21T18:33:25.349Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}