OutSystems Associate Developer study materials
OutSystems Associate Developer study resources

OutSystems Associate Developer: Fundamentals of OutSystems Web App Development

OutSystems Associate Developer · Work through your exam, one topic at a time.

All guide sections

Fundamentals of OutSystems Web App Development

The core mental model

An OutSystems web app is a module (Reactive Web App for modern screens) containing a set of elements: Entities (data model), Screens (UI pages), Server Actions (server-side logic), Client Actions (browser-side logic), Roles (authorization), and UI Flows (navigation containers). Reactive Web Apps render in the browser and use client-side data fetching, so screens are composed of Blocks (reusable UI components) and Widgets (Table, Form, List, If, Button).

Concepts you must be able to explain

  • Screen lifecycle: Preparation (runs on the server before render, fetches data via aggregates) vs. OnReady (client-side, after render). A classic trap: putting data-fetching logic in OnReady instead of Preparation.
  • Aggregates: declarative queries over entities with filters, sorts, and joins. Aggregates run server-side; they are not raw SQL and do not accept arbitrary expressions the way a query builder might.
  • Actions and scope: Local variables belong to the action; Input Parameters are passed in; Output Parameters returned. Server Actions cannot directly manipulate the DOM; Client Actions cannot directly query the database.
  • Roles and screen permissions: Roles gate access at the screen and action level. Anonymous users are represented by the built-in Anonymous role.

Traps to watch

Questions love to blur server vs. client. Remember: Aggregates and Entities are server-side; JavaScript and DOM manipulation are client-side. Another trap is confusing Preparation with a screen's OnInitialize; the latter runs only once per screen instance, while Preparation runs on each navigation to the screen.

Rule of thumb

"If it touches the database, it belongs in Preparation or a Server Action. If it touches the user's browser, it belongs in a Client Action or OnReady." Use this to triage nearly any question about where logic goes.