# Workflow
# Intro
This section presents our framework for patching - smaller changes to the code base e.g. bug fixes, handling of various vulnerabilities, minor changes to existing features
# Patch management process
The process centers around:
- Identification of patch potential / bugs / fixes
- Documentation and tracking of patch fixes
- Prioritization of patches
- Execution of patch - including reviews and testing
- Patch Release
# 1 Identification of patches
Patches are identified via the following sources and all managed in Trello and Jira
- Bugs reported from customers - often via Customer Success are added to Trello (bugs are screened by the Tech team and added to Jira if relevant)
- Bugs identified by internal employees who use our own software and systems are added to Trello (bugs are screened by the Tech team and added to Jira if relevant)
- Exception handling system - Sentry - directly added to Jira after daily screening of the tech team
- Vulnerability scanner: Snyk.io and AWS inspector or Dependabot are added directly to Jira
- Annual penetration reports - outcomes are added to Jira and prioritized
# 2 Documentation and tracking of patches
Regardless of the source, bugs needs to be added to Jira including as much background information as possible - including the source
For all non-urgent patch requirements, patches are prioritized as part of the bi-weekly sprint planning meetings and managed via tickets in Jira
# 3 Prioritization of patch efforts
By default critical patch requirements always take priority over all other engineering efforts. Non critical patch work is normally planned as part of the bi-weekly sprint planning.
Critical patch requirements are defined as either: 1) a bug or vulnerability that put client data at risk, 2) a bug that negatively impact the experience of more than 5% of the existing users
# 4 Executing patch fixes
If possible, eExecuting patch fixes follow the process:
- Recreate the issue
- Write a test to recreate the bug / issue via automated code for CI
- Update the code to make sure the test pass
- If possible: validate the related UX / UI and make sure it all works
- Create a PR
- Get at least 1 person in the Engineering team to review the change
- Ensure all automated tests still pass
- Ensure the patch does not have in security implications
# 5 Patch releases
Patch releases are conducted on a ongoing basis and do not include a wider change management process. However, if the patch / bug did expose client data relevant clients must be informed via the Customer Success team.