Dear OutSystems community,
One challenge I've encountered in OutSystems ODC (same for O11?) is the lack of branching like Git.
Changes are developed in the DEV environment and then promoted to TEST and PROD. However, deployments include all changes that exist in the application, including work that is still in progress.
This can become problematic in situations where a developer is working on a large feature that is not yet ready for release, while at the same time a small bug fix needs to be deployed urgently to production. Deploying the bug fix may also deploy parts of the unfinished feature, creating a risk for the release.
How are other teams managing this? Are there recommended strategies, best practices, or architectural approaches to isolate unfinished work and safely deploy urgent fixes without bringing along incomplete developments?
I was thinking of creating a boolean setting-variable: Dev-Branch. In dev set it to true, so the flow includes the new development. In prod set it to false, so it doesn't include the unfinished development in the flow.
Thanks!
Enjoy the weekend!
This IS a challenge, and the answer I know is a combination of (in order of importance)
Dorine
Dorine has said all the vital and important points for this one. A small addition I just want to add one that's actually proposed as a means for such situations, though it may not be the best thing to do only for critical times.
OutSystems promotes the whole application state, not isolated changes like Git branches. So when you have an in-progress version sitting in DEV and an urgent prod bug comes in, you can't cleanly deploy just the fix without dragging the unfinished work along (unless you code it manually on PROD, which also gives you a warning before publishing).
One thing that can be done in crucial cases: make one of your lower environments a mirror for prod. Say you have 4 environments DEV, QA, STG/UAT, and PROD and you're preparing release 2.0 while your live version is 1.19. A bug arises in prod that needs fixing asap. So what's proposed is:
This way UAT/business testing is done in STG normally, so end users don't mix with the testers working there. For any urgent bug fix that needs deployment or release notes, you do it in QA right away against the live version, then push it to PROD basically switching the order of the environments in LifeTime for that.
Again, this may not be a proper fix. The trade-off is that you temporarily lose a clean QA space for the 2.0 work testers end up testing in DEV with coordination with the team. That's part of why this only makes sense in genuinely urgent situations, not as a standing process.
This approach fits best when you've deployed a new version to STG and it may take some time to go live waiting on policies, CAB approvals, and so on leaving a window where PROD is still on the old version and an urgent fix can't wait. After it goes live everything goes back to normal
I don't think approach works in ODC as I believe you can only ever work off DEV directly and promote up. I don't believe there is a way to "do it in QA right away". Would be happy if I was wrong here though as it would be very convenient.
Totally on point.
@dex2dot0 ,
🤦♀️
yes, i completely missed the 'in ODC' part of that question, it is right there in the title !
so, hotfix in higher env is not possible in ODC
also, the ODC limitations make it harder to make small applications
Thanks Dorine and Sherif for taking the time to reply and your tips and tricks!Have a nice day!