Skip to content

Fixing Azure DevOps integration (broken because organizationName never reached createWorkItem()) - #327

Closed
jeroenterheerdt wants to merge 7 commits into
QuackbackIO:mainfrom
jeroenterheerdt:main
Closed

Fixing Azure DevOps integration (broken because organizationName never reached createWorkItem())#327
jeroenterheerdt wants to merge 7 commits into
QuackbackIO:mainfrom
jeroenterheerdt:main

Conversation

@jeroenterheerdt

Copy link
Copy Markdown

fix(integrations): forward integration config to outbound hooks

getIntegrationTargets() only passed {accessToken, rootUrl} into each hook's config, dropping integration-specific fields stored in integrations.config (organizationName, cloudId, teamId, etc). Azure DevOps work item creation failed with a misleading "reconnect" auth error because organizationName never reached createWorkItem() - same gap affects Jira/Teams/Monday/Trello/Asana.

Also stop discarding the Azure DevOps API response body on failure, so future errors log the actual validation message instead of a bare status code.

@CLAassistant

CLAassistant commented Jul 6, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ jeroenterheerdt
❌ Jeroen ter Heerdt


Jeroen ter Heerdt seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

getIntegrationTargets() only passed {accessToken, rootUrl} into each
hook's config, dropping integration-specific fields stored in
integrations.config (organizationName, cloudId, teamId, etc). Azure
DevOps work item creation failed with a misleading "reconnect" auth
error because organizationName never reached createWorkItem() -
same gap affects Jira/Teams/Monday/Trello/Asana.

Also stop discarding the Azure DevOps API response body on failure,
so future errors log the actual validation message instead of a
bare status code.
Jeroen ter Heerdt and others added 6 commits July 6, 2026 15:22
Previously the Azure DevOps hook created a work item for every new post
regardless of status. Switch the trigger to post.status_changed, only
firing when the post moves to "Under Review".

Match by status slug rather than display name, since names are
admin-editable but slugs are fixed at creation - threading
previousStatusSlug/newStatusSlug through the post.status_changed event
payload (dispatch.ts + its three call sites) so the hook survives a
future rename of the status.
…uackback

createWorkItem() now adds two relations on creation: a Hyperlink back to
the originating Quackback post (previously only embedded as plain text
in the description, so it never showed up in the work item's Links
tab), and a System.LinkTypes.Hierarchy-Reverse link to a parent work
item so items aren't created unparented.

The parent work item ID is a new "Parent work item ID" field in the
Azure DevOps integration settings (saved to integrations.config,
same mechanism as the existing project/work-item-type fields) rather
than a hardcoded constant, since the right parent differs per project.

Also fixes message-builders.test.ts, which still exercised Azure
DevOps's old post.created contract from before it was switched to
post.status_changed - it now has its own dedicated test block matching
its actual event shape.
@jeroenterheerdt jeroenterheerdt closed this by deleting the head repository Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants