- Over Transfer
- Werken bij
Last couple of months I had the pleasure to introduce several of our customers to the OutSystems Platform . OutSystems provides a low-code rapid application development and delivery platform that enables seamless integration of custom code. It combines speed with custom coding for the best of both worlds.
Often there is a big question mark about the license structure of OutSystems. In this blog I would like to tell you a little bit more about the OutSystems license structure and what you as a developer should keep in mind. This will result in a efficient license and a cleaner application architecture.
In an OutSystems License there are 2 major factors that determine your license fee:
The easiest way to monitor this is to look at the license page in Service Center, you can find this at: <OutSystems Environment>/ServiceCenter/Environment_Configuration. (jsf/aspx) under the link “Licensing”.
The number of users is fairly straight forward, but what is an Application Object (AO)?
If you look at the description from OutSystems it states: “all Entities, Screens and Integrations count for 1 AO”. With this you could roughly count how many AO’s your application will cost. But for all you techies I will give you a little bit more specifics about what count and what doesn’t count as an Application Object.
So OutSystems divides its IDE tool and platform into 4 categories:
In this category you can find everything related to the data structure and resources of your application. Every (static) entity that you make will count as 1 AO. An (static) entity correlates with an database table inside the OutSystems database. So in other words you could say that every table your application requires, will count as 1.
Everything else (Entity Diagrams, Structures, Session/Site variables and recourses) in this category is “free” and will not count towards your Application Object maximum. If you reuse entities from other eSpaces or extension they will count as Application Objects in their original module.
Creating (user) actions, roles, or exceptions will not count as AO’s. A good level of granularity in your actions can make your module better maintainable and supports the reuse in other modules. So don’t try to make one big action that supports all cases.
Consuming or exposing web services will count as AO’s because these services are integrations. Keep in mind that OutSystems counts the service methods and not the services. For example: if you expose 1 Service with 3 Service methods it will count as: 3 AO’s. The same rule is applied when consuming services each method you consume will count as 1 AO.
This category is straightforward: 1 AO for each screen and each email template you create. Reusable parts of a screen (webblocks) will not count on their own. A small thing worth mentioning: Multilingual Locales are also free from the AO count. So you could make your application Multi-language in as many locales if you want.
In this fourth and last category you have the opportunity to make (batch) timers and processes. Both will not count towards your application object maximum.
A good architecture and clean way of working will result in an optimal use of Application Objects. This holds for example for the use of tables (do you really need them) and the use of applications from the Forge.
If you reach the maximum application objects you cannot longer publish any modules that contain new application objects.
In conclusion, as a developer be aware of how many Application Objects the module you are developing and optimize your application if necessary. This will not only give you room to develop more great applications but also helps you to make your module as lean as possible. A lean module will support the reusability and maintainability of you application! OutSystems overview & education by Transfer Education.  Over time OutSystems license terms and conditions may be subject to change. Please contact OutSystems or Transfer Solutions for the latest information with regard to OutSystems licenses.
19 juni 2019 • Jacob Beeuwkes
24 mei 2019 • Transfer Solutions
11 mei 2019 • Brian van Bruggen
9 maart 2019 • Jurgen Duijster