Outsystems : A simple questions and answers.

Service Studio:

Service Studio is the visual development environment for OutSystems Platform, used to design web and mobile applications including their user interfaces, process flows, business logic, web services, and security policies.


Web server controls are objects on Web pages that run when the page is requested and that render markup to a browser. Many Web server controls resemble familiar HTML elements, such as buttons and text boxes. Other controls encompass complex behavior, such as a calendar controls, and controls that manage data connections like List records or table records.

Container control

Place holder

Expression control

If condition control

List records or table records : 

Table Records doesn't provide a flexible layout, since it’s mainly used to display the data in a table based layout.

List Records a very flexible and customizable layout., since it’s mainly used to display the data in any layout. Provides facility to insert another control inside it but table records doesn’t.

Editable Table: Allow to edit a single/multiple record in tabular format.

Edit Record: Allow editing a single record in tabular format.

Show Record:  Shows a single record in tabular format.

Text box

Check box

Radio button

Combo box: A dropdown list to select single value from list

List box: A dropdown list to select multiple values from list.



There are more than 500 components found for Web application, some are below:


Google Map


Advance Excel

Html 2pdf converter

Excel packages

PayPal connector

Date Picker



Input autocomplete :

Place a textbox with input_autocomplete.
Place an action for autocomplete widgets.
Here get all items on behalf of search text that needed to bind with “Input_AutoComplete_ShowList” action list widget.

Feedback Ajax Wait

Shows a message if Ajax calls take too much time to show.

Input Set Focus

Sets the focus on the specified Input or Input Password widget when the screen loads.

Popup Upload

A page to be used in a Popup_Editor to upload files.

Remove Popups

Prevents the page from appearing inside a popup.

Place an action for textbox change at textbox destination , in which assign the selected identifier into a variable using autocomplete action “Input_AutoComplete_GetIdentifier”




Extension : is a simple way to create our own code with .net/java

Integration studio

Integration studio providing such facility to create and compile extainsion on specific server. After compilation and publishing of extension we add this extension to our page by adding reference.


With OutSystems Platform, integration is easy. Developers manage the configurations of integration without the need to write custom code, significantly reducing time and effort and eliminating errors. Integration with SOAP and REST services and SAP systems is built in, and OutSystems Platform generates all the methods and data structures to integrate with the external system. Developers can then use them visually in the application logic. From a developer's perspective, there is almost no difference between invoking an OutSystems method, a REST API, or an SAP BAPI.

API OutSystems Platform provides you APIs that you can use to extend the capabilities of your applications. With these APIs you can integrate your applications with external systems, and have programmatically access to the features of the platform.


Crypto API ->(cryptographic lib Providing authentication encryption )compare password,compute hash ,encrpt and decrpt

'DBCleaner_API' ->For Platform Version Allows freeing-up database space.

Charts APIà> The OutSystems Platform API for plotting charts.

          To use this API simply reference the Charts eSpace using the References Window in the development environment.

       Chart Widgets:

     The charts available to use are:






         Life Time API –

               With LifeTime you have full visibility of all applications across all environments in your      infrastructure.


It is simple Stateless architecture tht generally run over Http

      REpresentational State Transfer

Determined to make the integration with REST APIs as simple as possible, OutSystems has introduced an entirely new way to automate the consumption of a REST API.

There is no contract in REST APIs, Simply typing the address for the REST API will enable OutSystems Platform to automatically discover the underlying structure present. It then creates an interface that can be dragged around in the visual logic as if it were any other piece of business logic or web service. Users just need to fill in the parameters and start using the API.

OutSystems Platform creates all the required structure to support impact and change analysis throughout the app. If the API changes, everything is updated, automatically healed and checked for impact

To consume a REST API, a developer needs to provide the service end-point URL, and an example of the service request and response in JSON. Most services include a JSON sample request and response in their documentation and it can be pasted into the OutSystems Platform IDE. OutSystems Platform generates everything needed to invoke the REST service.. /PhoenixBilling/rest/RESTAPI1

Web service - > to Access data frm different sources like web software app


      Simple object  Access Protcal based on XML so it easy to read

                 To consume a SOAP web service, developers simply provide the location of the     WSDL (Web Services Description Language) file. OutSystems Platform IDE inspects the WSDL and generates everything needed to invoke the web service methods.

Exposing SOAP web services is done by exposing the methods. OutSystems Platform will automatically create the WSDL and URL that can be consumed by any application with Internet connectivity.

SSL (Secure Sockets Layer) is the standard security technology for establishing an encrypted link between a web server and a browser. This link ensures that all data passed between the web server and browsers remain private and integral.


To execute asynchronous logic, use Timers. This is useful to execute batch tasks like sending emails at a predetermined time, or to execute logic to configure an application after its deployment.

A timer can be awaked in three different ways:

On a predetermined time;

After the application has been published;

Either programmatically or manually.


A Process is an element that allows you to integrate your business processes into your applications. A process is designed in a process flow, which usually represents the activities that have to be carried out during an entity life cycle.



An entity is an element which allows you to keep business information in a persistent way. The information is stored in Attributes. Entities are used to represent and manage your data base model.

Static Entities

A static entity is an entity that has static data associated to it. This static data is then managed in design time and you use it directly in the business logic design of your application thus benefiting from strong typing. You can think of Static Entities as enums that are stored in the data base


To create a multi-tenant application with OutSystems Platform, every eSpace of the application has to be marked as multi-tenant. This is done by simply setting the "Is Multi-tenant" property of the eSpace to "Yes." This isolates data, end-users, sessions and processes per tenant and alerts other developers to the fact that the eSpace is multi-tenant ready.

Since an end-user uniquely belongs to a tenant, the OutSystems Platform infers which tenant from the username, during the login process. Then, the end-user is bound to the tenant and all simple and advanced queries are automatically filtered to only return data from that tenant

Steps of upload and download release

First tack all the dependent eSpace modules references in our module Open service center and go to factory menu then go to Solutions sub menu then click on new Solutions link

Click Publish Steps

Save (optional): this is an optional step that is performed only if your module was opened from a file or was already saved to a file.

Upload: uploads the module to the Platform Server you are connected to.

Compile: this is executed in the Platform Server you are connected to and involves translating the oml file, handled by the development environment, into a set of Microsoft .NET or Java files.

Deploy: the last step of the 1-Click Publish operation which updates the published version of the module.


LifeTime fully automates DevOps processes, and manages the staging of your applications from development to production across cloud, on-premises or hybrid environments.

Real-time performance monitoring is built-in for all your applications and available in LifeTime. You’ll be able to see how each web and mobile application is performing on your users' devices.

LifeTime also enables you to define your IT team's access and control over applications and their components, across all environments.

Service Center

Service Center is OutSystems Platform web console that offers a comprehensive set of functionality to manage all operational aspects of your applications, including all logging and monitoring information needed for performance tuning, and for configuration of horizontal scalability.

What is Agile?

Agile is a time boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end.

It works by breaking projects down into little bits of user functionality called user stories, prioritizing them, and then continuously delivering them in short two week cycles called iterations/Sprints.

Deployment process:

SAP Integration                                                                      

Site property-One of the benefits of using site properties, is that you can change its value at runtime using the environment management console.

Outsystem 9 bali : Analytics: OutSystems Platform Bali takes mobile and web application performance management to a new level by providing innovative, holistic, analytics across the application portfolio.:


The default value for the session time-out depends on the application server:

.NET: 20 minutes and this value can be configured in machine.config file;

J2EE: 60 minutes and this value can be configured in /etc/.java/.systemPrefs/outsystems/prefs.xml file

A vendor management system (VMS) is a Web-based application that allows an organization to secure and manage staffing services on a temporary, permanent or contract basis. It helps centralize the complex issues that surround the staffing.

A VMS generally involves the following:

Job requisition or staff ordering

Automatic billing

Business intelligence (BI) functionality

Management reporting

Workflow engines

Getting Help 

Enterprise Customers 

Maintenance and Operations 

Designing the architecture of your OutSystems applications 

The 4 Layer Canvas (4LC) is an OutSystems architecture tool to make the design of Service-Oriented Architectures (SOA) simple. It promotes the correct abstraction of reusable (micro)services and the correct isolation of distinct functional modules, in cases where you are developing and maintaining multiple applications that reuse common modules. A typical medium to large OutSystems installation will support 20+ mission critical applications and 200+ interdependent modules.

The 4 layers

Each layer sets a different nature of the functionality to be captured in a module:

Processes, dashboards and portal home pages, mashing up information from different applications to provide a unified user experience.

User interfaces and processes, reusing Core and Library services to implement the user stories.

Services around business concepts, exporting reusable entities, business rules and business widgets.

Business-agnostic services to extend the framework with highly reusable assets, UI Patterns, connectors to external systems and integration of native code.

Aggregates and Advanced Queries

Use Aggregates: they’re optimized and database independent!

Use Advanced Queries for bulk operations

Use a 3 layers approach:

Business Processes: a service available for use by users or business processes

Core Entities: logical grouping of operations per responsibility

Connectors: extensions or integration with other systems

Create team processes for active log monitoring

Create team processes for manual deployment procedures such as data update scripts

If the number of lines to be uploaded is not fixed, then you should ensure that your application is capable of loading 65536 records, the maximum number of records Excel allows (Note: MS Office / Excel 2007 has a limit of 1 Million rows). Additionally, in a worst case scenario, Excel doesn't take more than two minutes to load, keeping in mind that table inserts will be progressively slower with table growth.

About Session Variables

Session variables hold data that is persisted during the session and can be used to save information during the end-user interaction. Each application has several session variables automatically created, but you can define new ones.

Session Variable lifetime

The session variables are initiated automatically by Service Studio when the Platform Server session is created. While the session exists, you can use these variables in your business logic. When the session ends, the session variables are set to their default value.

Pre-defined Session Variables

Each application has several session variables that are automatically created and read-only:

ExceptionMessage: Text that explains the reason for the last error, such as "Attempted to divide by zero". If the exception was raised due to an explicit Raise error, it will contain the text defined by the developer. Learn more about exception logging.

Read only.

MobilePhone: In SMS flows, this contains the value of the phone number. In web flows this variable is also available but has an empty value.

Read only. Phone number type.

UserId: Contains the unique identifier of the end-user making the request. This variable is instantiated during the login operation, whether you are using an explicit or implicit login. At logout, this session variable is assigned a Null Identifier value. Learn more about Authenticating End-users.

Read only.

Username: Contains the username of the end-user making the request. This variable is instantiated during the login operation, whether you are using an explicit or implicit login. At logout, this session variable is assigned an empty text value. Learn more about Authenticating End-users.

Read only. Text type.

TerminalType: Indicates the type of terminal that is being used to make the request. The possible values are: WAP, SMS, and Web. These values are instantiated when the session starts.

Read only.

User-defined Session Variables

You can define your own session variables. To define a session variable, simply right-click on the Session Variables folder (in the eSpace tree under the Data layer), and select the Add Session Variable option. Session variables, just like screen variables have an associated data type and a default value that can be set through the session variable properties. Learn more about session variables data types.

Session variables should be used with care since they can affect the scalability of your applications. You should try to avoid storing large quantities of data with session variables because, in each request, these variables need to be fetched from the database and then, when the request ends, updated in the database. When Service Studio detects you are compromising the application's performance and scalability, a warning message is displayed.

When the end-user logs in or out, using the Login, LoginPassword, or Logout actions, the session variables are set to their default value.

What you Should Know

Asynchronous logic such as sending Emails, Timers execution, Processes execution, and Web Services run on a different session, meaning that all session variables are set with their default value when the logic is executed.

System Roles and Custom Roles

When you create a new module in Service Studio, OutSystems provides you with a default set of System Roles but you are allowed to define your own custom Roles.

OutSystems provides the following System Roles:

Anonymous: Allows any end-user to access the element, including users that are not logged in (non-authenticated users). Anonymous is the most general Role and when you associate this Role, for example with a screen, all of the existing Roles are automatically associated with it.

Registered: Allows any end-user who has logged into an Application running in the same platform server (authenticated users) to access the element. This is possible due to the Single Sign-On mechanism of OutSystems, which allows sharing end-user sessions among applications/modules. When you associate this Role with an element all of the existing Roles are automatically associated with it, except the Anonymous role.

Besides the System Roles already provided, you can define your own custom Roles to manage the access of end-users to the screens and operation of your application.

The following Role is provided by default when you create the first module of your application:

<Module Name>User

Persistency in Roles

Permissions can be persistent across multiple sessions, or only be granted for a single session.

Persistent: The association between the end-user and the Roles is stored in the database. Every time the end-user logs in, the association between the end-user and the Roles is established. Set the Is Persistent property of the Role to Yes.

Not persistent: The Role is only associated with the user for a single session, and not persistent in the database. When the end-user logs in for the second time, the Role is not associated with the end-user. Set the Is Persistent property of the Role to No.

#Theme temlpates

Dublin Template



# Good practice of Coding



Very useful info .. thanks 

Good summary.

Huarlem Lima wrote:

Good summary.


Full Forms

OML: OutSystems Modeling Language.

XIF: External Integration File.

OAP: OutSystems Application Package.

OSP: OutSystems Solution Package.

What is LOW-Code?

What is low-code? Low-code is a way to design and develop software fast and with minimal hand-coding. It enables skilled people to deliver value more quickly and more reliably.

What are application objects?

Application objects are elements of your application:

  • Pages: The screens you design or install in your environment for end users. These can include web screens, email screens, mobile web screens and SMS screens as designed in the visual development environment. For example, a pop-up web screen or a Supplier_List web screen each equals 1 application object.

  • Tables: Entities that you design with Outsystems Platform or import for integration from external databases or both. Each Local Storage entity (applicable to mobile) will count 1 additional AO, regardless if it is a new entity or an existing one.

  • API/Service operations: Methods from web services, REST APIs or integration connectors that you consume or expose. APIs in extensions, the C# code that you reuse in OutSystems Platform, are not accounted for.

What constitutes a page?

Pages are the web screens, email screens, mobile web screens, SMS screens as designed in the visual development environment. Web blocks are not pages, but screen components. Therefore they’re not counted.

When a single page includes multiple tabs, what is counted?

If each tab is implemented in a different web screen in the designer, they are different pages and each is an application object. If each tab is implemented in the same screen with web blocks or inline, they all constitute just 1 page or 1 application object.

What about pop-ups on a single page?

If the content of the popup is a different web screen, the screen in the popup is counted as a page and therefore is an application object. This is the default when you scaffold a popup or use Richwidgets popup components. 

Usually, a tiny help message will not have its own screen, but will instead be something like a tool tip and therefore is not counted as an application object. If the popup has some transactional logic, it is usually implemented in a different screen and therefore counts as an application object. The developer will decide the best design.

Hey good job Vijay. Try to post this on linked on Outsystems group as a post.

thanks suraj.

What are Templates?

Templates are modules and specific naming that become available is starting point when create new application .

Good efforts vijay   

Thanks Shukla ji.

Vijay Malviya wrote:

Thanks Shukla ji.

Always welcome   

Unique Key, Primary Key & Foreign Key

Primary Key

  • Primary key cannot have a NULL value.
  • Each table can have only one primary key.
  • By default, Primary key is clustered index and data in the database table is physically organized in the sequence of clustered index.
  • Primary key can be related with another table's as a Foreign Key.
  • We can generated ID automatically with the help of Auto Increment field. Primary key supports Auto Increment value.

Unique Key

  • Unique Constraint may have a NULL value.
  • Each table can have more than one Unique Constraint.
  • By default, Unique key is a unique non-clustered index.
  • Unique Constraint can not be related with another table's as a Foreign Key.
  • Unique Constraint doesn't supports Auto Increment value.

Foreign Key

  • Foreign key is a field in the table that is primary key in another table.
  • Foreign key can accept multiple null value.
  • Foreign key do not automatically create an index, clustered or non-clustered. You can manually create an index on foreign key.
  • We can have more than one foreign key in a table.
  • There are actual advantages to having a foreign key be supported with a clustered index, but you get only one per table. What's the advantage? If you are selecting the parent plus all child records, you want the child records next to each other. This is easy to accomplish using a clustered index.
  • Having a null foreign key is usually a bad idea. In the example below, the record in [dbo].[child] is what would be referred to as an "orphan record". Think long and hard before doing this.

 good job Vijay...

Really Appreciate #VijayMalviya

Thanks Manish. 

Just a note to the readers who may be reading the topic: the links from the first post link to the product versions and documentation pages that reached end of life and are no longer supported.

For an up to date documentation overview please check this link.


thanks for advise.

Greate work Vijay.. helpful. 


Very useful info .. thanks 

good work

Thanks ankur

Thank you for this summary was very helpful =)

Luana Almeida wrote:

Thank you for this summary was very helpful =)

thanks luana

It's really helpful....
Thanks Vijay.. 

Welcome. :)

Input Parameter

An Input Parameter allows you to provide data to an element for further use. The Input Parameter becomes available in that element's scope.

For example, if you add an Input Parameter to a Client Action you can:

Provide a value for that Input Parameter when calling the Client Action.

Use the value in the logic flow of the Client Action, for example in expressions or as a part of Input Parameter values of other calls.

In the following example, the GetWeatherData Client Action has two Input Parameters (City and Country) and one Output Parameter (WeatherInfo):

nput Parameters can be mandatory or optional, according to their Is Mandatory property.

If you call other Actions from the Client Action you can no longer access the Input Parameter because it's not longer in the Client Action scope. To make the Input Parameter value accessible to other calls, include the Input Parameter in the arguments of the Action Call.


I was trying to find an answer to a question related to Agile but in different documentations, I got some different answers, Could you help me to answer it according to What Outsystems follows?

Q. What is the best time to write the test cases for an agile iteration?

Is it in parallel of development or after done with the development of the iteration or when?


Nice summary about each and every topic..

Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.