🎯 Objective
There are plenty of bugs from customers that existing logic is not working well.
- SUPPORT-181891Getting issue details... STATUS
- SUPPORT-182594Getting issue details... STATUS
- SUPPORT-184988Getting issue details... STATUS
- SUPPORT-182743Getting issue details... STATUS
- SUPPORT-182983Getting issue details... STATUS
- SUPPORT-189821Getting issue details... STATUS
- SUPPORT-189957Getting issue details... STATUS
- LINKCLOUD-627Getting issue details... STATUS
\uD83D\uDCCA Success metrics
Goal | Metric |
---|---|
\uD83E\uDD14 Assumptions
\uD83C\uDF1F Milestones
\uD83D\uDDD2 Requirements
Requirement | User Story | Importance | Jira Issue | Notes |
---|---|---|---|---|
We would like to use FUSE for SQS registration. | Need to implement a new feature on the FUSE side for supporting SQS registration without EventBridge | HIGH | As a temporal workaround we can create it manually. | |
Implement Lambda webhooks handler. | Most of the events will be handled using lambdas but some of them(app installed & uninstalled) should be redirected to the SQS. | HIGH |
| Update page relations based on the following events(confluence webhooks) on the backend side:
|
Implement ECS service. | Need to scan all Confluence pages and update link references. | HIGH | Background job must scan all confluence pages since the last re-index date if exists and update page relations. |
\uD83C\uDFA8 New design high level architecture:
Lambda webhooks handler
This is an entry point for the whole scheme and there two key ideas.
[1] When we receive page content related updates
Page content related webhooks that we plan to support: PAGE_CREATED , PAGE_UPDATED, PAGE_RESTORED, PAGE_REMOVED, PAGE_MOVED, PAGE_COPIED, PAGE_ARCHIVED, PAGE_UNARCHIVED
we need to check a content of a page and identify external links and if there any we need to update storage through a REST API.
[2] Long running events
When we receive: CONNECT_ADDON_ENABLED & CONNECT_ADDON_DISABLED events, we need to send them to SQS.
Event example:
{ key: 'net.customware.confluence.plugin.linking', clientKey: 'f...8', publicKey: 'MIIBI...AB', serverVersion: '6452', pluginsVersion: '1000.0.0.df206a1a35d4', baseUrl: 'https://appfire-supercat.atlassian.net/wiki', productType: 'confluence', description: 'Atlassian Confluence at https://appfire-supercat.atlassian.net/wiki', eventType: 'enabled', displayUrl: 'https://appfire-supercat.atlassian.net/wiki' }
ECS service
The idea is to perform whole Confluence content reindex for our API & data access. We need it in order to make page links accessible through a REST API.
SO, when users add page link macro our app can easily gather all needed links for a specific page.
Open Questions
Question | Answer | Date Answered |
---|---|---|
Do we need to keep links for archived pages? | [most likely no, but…] |