SlideShare a Scribd company logo
| The 4 layer canvas in practice
The 4 layer canvas in
practice.
and our lessons learned
| The 4 layer canvas in practice| The 4 layer canvas in practice
Marlies
Quaadgras
Senior Consultant | Transfer Solutions
@
in
marlies.quaadgras@transfer-solutions.com
/marliesquaadgras
| The 4 layer canvas in practice| The 4 layer canvas in practice
Our experiences.
| The 4 layer canvas in practice| The 4 layer canvas in practice
Learning from
trial and error.
| The 4 layer canvas in practice| The 4 layer canvas in practice
● Architecture model
● Our architecture
● Implementation
● Lessons Learned
| The 4 layer canvas in practice| The 4 layer canvas in practice
The 4 layer canvas
architecture model.
| The 4 layer canvas in practice| The 4 layer canvas in practice
| The 4 layer canvas in practice| The 4 layer canvas in practice
| The 4 layer canvas in practice
Cost effective architecture design
Easy to maintain
Easy to evolve
Method for a
service-oriented
structure
| The 4 layer canvas in practice
● relationships and references
are properly managed;
Method for a
service-oriented
structure
| The 4 layer canvas in practice
● relationships and references
are properly managed;
● multiple users can work on
different parts;
Method for a
service-oriented
structure
| The 4 layer canvas in practice
● relationships and references
are properly managed;
● multiple users can work on
different parts;
● possible partial deliveries;
Method for a
service-oriented
structure
| The 4 layer canvas in practice| The 4 layer canvas in practice
The start of the project.
| The 4 layer canvas in practice
The first setup
Simple
One product
One application
| The 4 layer canvas in practice| The 4 layer canvas in practice
| The 4 layer canvas in practice| The 4 layer canvas in practice
The new architecture.
| The 4 layer canvas in practice
New modules
● 2 orchestration modules
● 8 end user modules
● 10 core modules
● 1 library module
| The 4 layer canvas in practice
● Same functionality together
● Avoid side to side references
How to split
| The 4 layer canvas in practice
● Related entities
● Wrappers
● Server actions
● Service actions
● Simple webblocks
Core modules
| The 4 layer canvas in practice
● Webscreens
● Webblocks
End user modules
| The 4 layer canvas in practice
Library module
● Theme
● Menu
● Roles
| The 4 layer canvas in practice
Core modules
● Entities
● Wrappers
● Webblocks
● Serveractions
| The 4 layer canvas in practice
Enduser modules
● Webscreens
● Webblocks
| The 4 layer canvas in practice
Orchestration
modules
● Dashboard
● Development Backoffice
| The 4 layer canvas in practice| The 4 layer canvas in practice
Implementation.
| The 4 layer canvas in practice
● Add no functionality
● Work in pairs
● Remove test data
● Use Discovery
| The 4 layer canvas in practice
● Entity is table in database
● Name contains module and
entity name
● Only during development
| The 4 layer canvas in practice
Core module
● Most difficult;
● Copy from one to many other
modules;
● Keep the data
| The 4 layer canvas in practice
● Copy entities from X to A
● Make elements A public
● Publish A
● Remove entities from X
● Reference all of A
● Solve errors
● Publish X
● Remove unused
dependencies in X from A
● Then X to B
● Then X to C
| The 4 layer canvas in practice
End User modules
● Copying is easy;
● Use CommonExternalUrl and
GetEntryUrl to prevent side to
side references
Theme module
● Copy the menu
| The 4 layer canvas in practice| The 4 layer canvas in practice
Lessons learned.
| The 4 layer canvas in practice
● Start early with more modules
● Take your time for splitting
modules
● Use Discovery frequently
| The 4 layer canvas in practice
Results
● Small delay, big success
Quality, Maintainability
● New test data added
| The 4 layer canvas in practice| The 4 layer canvas in practice
Please visit our other presentations
Oct 29. 15:30 - The 4 Layer Canvas in Practice (Marlies Quaadgras)
Oct 30. 13:50 - Integrate with Office 365 (Martijn Habraken)
Oct 30. 14:35 - Responsive UI With Realtime database (Martijn Habraken)
Oct 30. 15:30 - Enter the O-Zone: OutSystems & Oracle (Matthieu de
Graaf)
Oct 30. 15:30 - Unattended OutSystems Installation (Herman Slange &
Nicolay Moot)
| The 4 layer canvas in practice
Thank You!
@ inmarlies.quaadgras@
transfer-
solutions.com
/ marliesquaadgras

More Related Content

What's hot (20)

PPTX
Using Processes and Timers for Long-Running Asynchronous Tasks
OutSystems
 
PPTX
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
OutSystems
 
PPTX
What Is Light BPT and How Can You Use it for Parallel Processing?
OutSystems
 
PPTX
OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A...
OutSystemsNeo
 
PPTX
Growing and Scaling OutSystems
OutSystems
 
PPTX
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
OutSystems
 
PPTX
OutSystems Lessons: Center of Excellence and Adoption Strategies
OutSystems
 
PPTX
BPM Patterns & Best Practices with OutSystems BPT
Gonçalo Borrêga
 
PPTX
Integrate OutSystems With Office 365
OutSystems
 
PPTX
Extending OutSystems with Javascript
RitaDias72
 
PPTX
Create Amazing Reports in OutSystems
OutSystems
 
PPTX
Using Processes and Timers for Long-Running Asynchronous Tasks
OutSystems
 
PPTX
OutSystems Tricks & Tips for Complex UI Integrations
OutSystems
 
PPTX
Tenants: A Look Behind the Scenes
OutSystems
 
PDF
Caching Data in OutSystems: A Tale of Gains Without Pain
CatarinaPereira64715
 
PPTX
Testing With OutSystems
OutSystems
 
PPTX
0 to 60 With Outsystems
OutSystems
 
PPTX
Training Webinar: Detect Performance Bottlenecks of Applications
OutSystems
 
PDF
Technical Webinar: By the (Play) Book: The Agile Practice at OutSystems
OutSystems
 
PDF
Training Webinars - Secret hacks for OutSystems 10
OutSystems
 
Using Processes and Timers for Long-Running Asynchronous Tasks
OutSystems
 
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
OutSystems
 
What Is Light BPT and How Can You Use it for Parallel Processing?
OutSystems
 
OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A...
OutSystemsNeo
 
Growing and Scaling OutSystems
OutSystems
 
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
OutSystems
 
OutSystems Lessons: Center of Excellence and Adoption Strategies
OutSystems
 
BPM Patterns & Best Practices with OutSystems BPT
Gonçalo Borrêga
 
Integrate OutSystems With Office 365
OutSystems
 
Extending OutSystems with Javascript
RitaDias72
 
Create Amazing Reports in OutSystems
OutSystems
 
Using Processes and Timers for Long-Running Asynchronous Tasks
OutSystems
 
OutSystems Tricks & Tips for Complex UI Integrations
OutSystems
 
Tenants: A Look Behind the Scenes
OutSystems
 
Caching Data in OutSystems: A Tale of Gains Without Pain
CatarinaPereira64715
 
Testing With OutSystems
OutSystems
 
0 to 60 With Outsystems
OutSystems
 
Training Webinar: Detect Performance Bottlenecks of Applications
OutSystems
 
Technical Webinar: By the (Play) Book: The Agile Practice at OutSystems
OutSystems
 
Training Webinars - Secret hacks for OutSystems 10
OutSystems
 

More from OutSystems (20)

PPTX
Innovating at the Speed of Business in the High-Bandwidth World of Digital Media
OutSystems
 
PPTX
Beyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
OutSystems
 
PPTX
From Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
OutSystems
 
PPTX
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
OutSystems
 
PPTX
Fast and Furious: Modernizing Clinical Application
OutSystems
 
PPTX
Enrich Visually Google Map Information With Layers
OutSystems
 
PPTX
Unattended OutSystems Installation
OutSystems
 
PPTX
Speed up Development by Turning Web Blocks Into First-Class Citizens
OutSystems
 
PPTX
Responsive Ui with Realtime Database
OutSystems
 
PPTX
RADS - Rapid Application Design Sprint
OutSystems
 
PPTX
Pragmatic Innovation
OutSystems
 
PPTX
Troubleshooting Dashboard Performance
OutSystems
 
PPTX
No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...
OutSystems
 
PPTX
Neo in Wonderland: Essential Tools for an Outsystems Architect
OutSystems
 
PPTX
Measure Customer Experience of Your OutSystems Web and Mobile Applications
OutSystems
 
PPTX
Link Users to Your Specific Page in a Mobile App With Deeplinks
OutSystems
 
PPTX
Launching a BPT Process on Entity Update
OutSystems
 
PPTX
Setting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
OutSystems
 
PPTX
Intro to the Data Grid
OutSystems
 
PPTX
How to Attract and Train Talent in Highly Competitive Markets
OutSystems
 
Innovating at the Speed of Business in the High-Bandwidth World of Digital Media
OutSystems
 
Beyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
OutSystems
 
From Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
OutSystems
 
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
OutSystems
 
Fast and Furious: Modernizing Clinical Application
OutSystems
 
Enrich Visually Google Map Information With Layers
OutSystems
 
Unattended OutSystems Installation
OutSystems
 
Speed up Development by Turning Web Blocks Into First-Class Citizens
OutSystems
 
Responsive Ui with Realtime Database
OutSystems
 
RADS - Rapid Application Design Sprint
OutSystems
 
Pragmatic Innovation
OutSystems
 
Troubleshooting Dashboard Performance
OutSystems
 
No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...
OutSystems
 
Neo in Wonderland: Essential Tools for an Outsystems Architect
OutSystems
 
Measure Customer Experience of Your OutSystems Web and Mobile Applications
OutSystems
 
Link Users to Your Specific Page in a Mobile App With Deeplinks
OutSystems
 
Launching a BPT Process on Entity Update
OutSystems
 
Setting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
OutSystems
 
Intro to the Data Grid
OutSystems
 
How to Attract and Train Talent in Highly Competitive Markets
OutSystems
 
Ad

Recently uploaded (20)

PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PDF
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PPTX
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PPTX
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
Ad

The 4-Layer Architecture in Practice

  • 1. | The 4 layer canvas in practice The 4 layer canvas in practice. and our lessons learned
  • 2. | The 4 layer canvas in practice| The 4 layer canvas in practice Marlies Quaadgras Senior Consultant | Transfer Solutions @ in [email protected] /marliesquaadgras
  • 3. | The 4 layer canvas in practice| The 4 layer canvas in practice Our experiences.
  • 4. | The 4 layer canvas in practice| The 4 layer canvas in practice Learning from trial and error.
  • 5. | The 4 layer canvas in practice| The 4 layer canvas in practice ● Architecture model ● Our architecture ● Implementation ● Lessons Learned
  • 6. | The 4 layer canvas in practice| The 4 layer canvas in practice The 4 layer canvas architecture model.
  • 7. | The 4 layer canvas in practice| The 4 layer canvas in practice
  • 8. | The 4 layer canvas in practice| The 4 layer canvas in practice
  • 9. | The 4 layer canvas in practice Cost effective architecture design Easy to maintain Easy to evolve Method for a service-oriented structure
  • 10. | The 4 layer canvas in practice ● relationships and references are properly managed; Method for a service-oriented structure
  • 11. | The 4 layer canvas in practice ● relationships and references are properly managed; ● multiple users can work on different parts; Method for a service-oriented structure
  • 12. | The 4 layer canvas in practice ● relationships and references are properly managed; ● multiple users can work on different parts; ● possible partial deliveries; Method for a service-oriented structure
  • 13. | The 4 layer canvas in practice| The 4 layer canvas in practice The start of the project.
  • 14. | The 4 layer canvas in practice The first setup Simple One product One application
  • 15. | The 4 layer canvas in practice| The 4 layer canvas in practice
  • 16. | The 4 layer canvas in practice| The 4 layer canvas in practice The new architecture.
  • 17. | The 4 layer canvas in practice New modules ● 2 orchestration modules ● 8 end user modules ● 10 core modules ● 1 library module
  • 18. | The 4 layer canvas in practice ● Same functionality together ● Avoid side to side references How to split
  • 19. | The 4 layer canvas in practice ● Related entities ● Wrappers ● Server actions ● Service actions ● Simple webblocks Core modules
  • 20. | The 4 layer canvas in practice ● Webscreens ● Webblocks End user modules
  • 21. | The 4 layer canvas in practice Library module ● Theme ● Menu ● Roles
  • 22. | The 4 layer canvas in practice Core modules ● Entities ● Wrappers ● Webblocks ● Serveractions
  • 23. | The 4 layer canvas in practice Enduser modules ● Webscreens ● Webblocks
  • 24. | The 4 layer canvas in practice Orchestration modules ● Dashboard ● Development Backoffice
  • 25. | The 4 layer canvas in practice| The 4 layer canvas in practice Implementation.
  • 26. | The 4 layer canvas in practice ● Add no functionality ● Work in pairs ● Remove test data ● Use Discovery
  • 27. | The 4 layer canvas in practice ● Entity is table in database ● Name contains module and entity name ● Only during development
  • 28. | The 4 layer canvas in practice Core module ● Most difficult; ● Copy from one to many other modules; ● Keep the data
  • 29. | The 4 layer canvas in practice ● Copy entities from X to A ● Make elements A public ● Publish A ● Remove entities from X ● Reference all of A ● Solve errors ● Publish X ● Remove unused dependencies in X from A ● Then X to B ● Then X to C
  • 30. | The 4 layer canvas in practice End User modules ● Copying is easy; ● Use CommonExternalUrl and GetEntryUrl to prevent side to side references Theme module ● Copy the menu
  • 31. | The 4 layer canvas in practice| The 4 layer canvas in practice Lessons learned.
  • 32. | The 4 layer canvas in practice ● Start early with more modules ● Take your time for splitting modules ● Use Discovery frequently
  • 33. | The 4 layer canvas in practice Results ● Small delay, big success Quality, Maintainability ● New test data added
  • 34. | The 4 layer canvas in practice| The 4 layer canvas in practice Please visit our other presentations Oct 29. 15:30 - The 4 Layer Canvas in Practice (Marlies Quaadgras) Oct 30. 13:50 - Integrate with Office 365 (Martijn Habraken) Oct 30. 14:35 - Responsive UI With Realtime database (Martijn Habraken) Oct 30. 15:30 - Enter the O-Zone: OutSystems & Oracle (Matthieu de Graaf) Oct 30. 15:30 - Unattended OutSystems Installation (Herman Slange & Nicolay Moot)
  • 35. | The 4 layer canvas in practice Thank You! @ inmarlies.quaadgras@ transfer- solutions.com / marliesquaadgras

Editor's Notes

  • #2: Welcome to my presentation about the 4 layer canvas in practice.
  • #3: My name is Marlies Quaadgras and I work for Transfer Solutions. I have more than 30 year experience in software development and testing. The last 3 years I have worked with outsystems. In different ways. Alone on a system, as “Delivered hands” in a big project, and as techlead.
  • #4: These are the experiences that our team had with the 4 layer canvas, and the lessons we have learned about it. So for us it was the best architecture, and i will tell how we got this architecture
  • #5: One of the statements I often use is “Learning from trial and erro”, or in dutch “van proberen kun je leren”. When I was on a solo project, I had to try a lot of things before it worked fine. Now I can do those in 2 minutes, but then I was trying 2 3 days to find out. Or just out of the box, if it does not work this way, lets do it the other way around. But now I know exactly what works and what does not work.
  • #6: First i am gonna tell you some theory about the 4 layer architecture model. The theory about the model as Outsystems described it Then about the architecture that we choose for our systems, and the vision we had about it How we implemented the new architecture and the lessons we have learned
  • #7: So let start with the theory behind the 4 layer canvas
  • #8: Modular programming leads to this structure of modules. You don’t want a monolith structure They are all modules in outsystems To make a good architecture you have to orden it and use logica to put the domains that belong together in the same module. Also put the units that have the same function in the same layer
  • #9: BEST PRACTICE FROM OUTSYSTEMS 1. The Orchestration Layer contains the processes, dashboards and the portal so it allows the user a unified user experience 2. The End User Layer contains the user interfaces and user processes. The user stories are implemented here. The screen that the user sees 3. The Core Layer contains the entities, the business concepts and business rules that are used in various End User Layers. When you sport, you do some excercises for you core, it’s the base of everything. 4. The Foundation Layer is business independent and includes Menus, UI patterns and communication with external systems. No data
  • #10: The 4 Layer Canvas is an OutSystems architecture method in which a server-oriented structure can be designed. With this architecture, relationships and references of the modules can be properly managed, which enables the possibility partial deliveries take place.
  • #11: 5 The 4 Layer Canvas is an OutSystems architecture method in which a server-oriented structure can be designed. With this architecture, relationships and references of the modules can be properly managed, which enables the possibility partial deliveries take place.
  • #12: Clear ownership of modules Different developers can work on different modules
  • #13: Possible partly deliverances. So in case that a hotfix needs to be done just some modules can be deployed
  • #14: So how did we started the project.
  • #15: It started very simple. According to the customer is was about 6 weeks work for 1 person. I was that person. The customer would deliver the functionalities that I had to make. We did not had the exact functionalities before we started, but assuming the customer made a good estimation, We choose a simple structure. In one application, just one module in the end user layer, and 3 core layers. The menu and the theme were placed in the end user layer.
  • #16: It became apparent that a lot of merging needed to be done while publishing. So we stopped developing in order to create and implement a new architecture
  • #18: This is the result of how we split the modules Modules contain information of the same functional area
  • #19: How do we decide to split? Modules contain information of the same functional area. For an order you need orderlines For a product you need statistics about how often the product is used in orders Product not only contains the product entity, but referential entities like a product picture, pricelists, product group
  • #20: How do we decide to split? Modules contain information of the same functional area. Related entities like ProductImage, ProductGroup, ProductPrice , ProductAvailability Wrappers because security, so that the entity actions are not called themselves Serveractions like changing status of the product, or the availability Simple webblocks like you always want to display the number and the name of the product together
  • #21: Webscreens like ProductList, ProductDetail, ProductPriceOverview
  • #22: Library module: Menu, theme roles
  • #23: Core layer: The entities, and the server actions that are specific to the entities and the crud actions The entities with the same functional purpose can also be found here. If there's an entity that has a many-to-many relationship with two entities that will be placed in two different modules, this entity cannot access one of the two modules because then there will be side-to-side references. Separate Core Layer modules must be provided for these entities. When no webblocks are involved, we can user service modules
  • #24: End User Layer. The web screens and web blocks are divided based on their functional purpose. If a web block is invoked in multiple web screens, this web block is placed in a separate module in the Core Layer, and not in one of the modules that the web block invokes. This is to prevent side to side references. These modules also contain business rules, which are implemented as server actions and specifically relate to the functional purpose of the module.
  • #25: Development backoffice: First test webscreens not in the menu but accessible by the developer, later these are placed in the development backoffice Dashboard; just one webscreen contains webblocks for all the necessary information
  • #26: So how did we implement this new structure?
  • #27: Before we started, we took the following conditions: no functionality is added. That logically, but you tend to change something while you see it. That is why we were working in pairs, so made sure you don’t do anything wrong. Of course you can go back to a previous version, but it is better to do it right immediately remove test data: since the project was now only 2 months ahead, we had no solid test data. There was some corrupt data, made by versions that were not right at the start, so there was no problem that those data was removed. We searched for tools to keep the data, but that offered too much effort for a little profit. For test purposes, it is a good opportunity to clean the database and add new test data. Use discovery to keep the changes in track, and act immediately
  • #28: Before we started, we took the following conditions: no functionality is added. That logically, but you tend to change something while you see it. That is why we were working in pairs, so made sure you don’t do anything wrong. Of course you can go back to a previous version, but it is better to do it right immediately remove test data: since the project was now only 2 months ahead, we had no solid test data. There was some corrupt data, made by versions that were not right at the start, so there was no problem that those data was removed. We searched for tools to keep the data, but that offered too much effort for a little profit. For test purposes, it is a good opportunity to clean the database and add new test data. Use discovery to keep the changes in track, and act immediately
  • #29: At first we started with the core modules. That was the most difficult. We needed to split one module in one to many modules, so we could not use the way as it was described here. As I said, we did not need to keep the data, so we just copied the entities and the crud server actions to another module. We made them public and then published the new module so that they were saved. After that we removed the entities and server actions from the old module. That lead to a lot of errors. By setting the dependencies to all the items in the new module, all or most of the errors disappeared. The few that stayed needed to be checked one by one. When there were no errors the module is published. After publishing we removed the unused dependencies, to have a clean module, and then publish it again.
  • #30: Before we started, we took the following conditions: no functionality is added. That logically, but you tend to change something while you see it. That is why we were working in pairs, so made sure you don’t do anything wrong. Of course you can go back to a previous version, but it is better to do it right immediately remove test data: since the project was now only 2 months ahead, we had no solid test data. There was some rotten data, made by versions that were not right at the start, so there was no problem that those data was removed. We searched for tools to keep the data, but that offered too much effort for a little profit. For test purposes, it is a good opportunity to clean the database and add new testdata. Use discovery to keep the changes in track, and act immediately
  • #31: After that the end user screens were easy. We copied them to the right module. To avoid side to side references, web blocks that are used in 2 screens in different end user layers are copied to new modules in the core layer. Do not use the module name itself, but use the external URL The menu and the roles are copied to the theme module. Also here the external url is used, to avoid upward references.
  • #33: First it was a small delay but a big success. We used one sprint to figure out how we could split and the perform the actual split. No functionality was added. The next time I would define a lot more modules, may be if they only contain just one entity and its server actions, to avoid this again. But you always need to know in advance how big the system will eventually end up and what extra functionality may be will be added To avoid side to side and upwards references, use discovery frequently during the process. Always define the right colors for your system, and leave the modules in outsystems that are not in your system grey. Then you can see immediately if the architecture is ok. For test purposes, it is sometimes a good opportunity to start with a new clean database that you can fill with your own test data, instead of going on with may be rotten data.
  • #34: First it was a small delay but a big success. We used one sprint to figure out how we could split and the perform the actual split. No functionality was added. For test purposes, it is sometimes a good opportunity to start with a new clean database that you can fill with your own test data, instead of going incorrect data.