Ideas
10863ideas
Created on 03 Mar
2019-11-06 14-40-03
dauster
Service Studio already ships with a powerful but underdocumented headless execution mode. Through hands-on reverse engineering, we have confirmed and validated the following commands: -d (diff), -refresh, -u, -uu, -exportSettings, -importSettings, -cleanup, -removeChangeTracking, -runTests, -export, -import, and -silentrecover. These existing commands prove that Service Studio is architecturally capable of running fully headless, without opening a GUI. This proposal builds on that foundation to request ten new CLI commands that would unlock: AI-powered codebase analysis on .oml files without a running GUI CI/CD pipeline integration via GitHub Actions, Docker, and Linux environments Automated dependency management, publishing, and solution creation Programmatic introspection of modules, applications, elements, and SS_Keys These requests do not change the OutSystems platform concept or runtime. They expose what the IDE already does — through a command-line interface that can be scripted, automated, and run in containers. Proposed New Commands 1. ss list-apps — List Applications with Names and SS_Keys Problem: There is no headless way to enumerate the applications available on a server, along with their SS_Key (the GUID used by servicestudio:// deep links and LifeTime APIs). 2. ss list-modules — List Modules with Names and SS_Keys Problem: Modules are the atomic unit of development in OutSystems, but there is no headless way to enumerate them with their SS_Key GUIDs — the identifiers required for servicestudio:// protocol links and element navigation. 3. ss check-deps — Verify Module Dependencies Before Publish Problem: Before publishing a module, a developer needs to know if its dependencies are up to date, or if a producer module was published with breaking changes. The current workflow requires opening Service Studio, navigating to "Manage Dependencies," and manually inspecting each reference. There is no headless equivalent. 4. ss publish — Publish a Module Problem: There is no headless command to publish a module to a server. The current workflow requires opening Service Studio and clicking "1-Click Publish." This blocks full CI/CD automation. 5. ss republish — Republish a Module (Service Center Style) Problem: Service Center provides a "1-Click Publish" that recompiles and redeploys a module using its last published OML source, without requiring the source file on disk. This is critical for environment redeployments, disaster recovery, and CI/CD rollbacks — but it has no CLI equivalent. 6. ss list-elements — List All Elements of a Module by Name and SS_Key Problem: To use the servicestudio:// deep link protocol (e.g., to link directly to a specific action from a CI report or an AI analysis tool), you need the SS_Key of the element. Currently, the only way to get element keys is through direct database access or by reverse engineering internal API calls. 7. ss add-action — Add a Simple Action Using a Mermaid-Style Flow Definition Problem: Creating a simple server or client action in Service Studio requires opening the GUI, navigating to the correct module, and manually building the flow. For repetitive, pattern-based actions (logging, error handling, standard API calls), this is a barrier to AI-assisted code generation. 8. ss for Linux — Docker and GitHub Actions Support Problem: Service Studio is currently only available for macOS and Windows. This means CI/CD pipelines running on Linux (the default for GitHub Actions, GitLab CI, and most Docker containers) cannot use any Service Studio CLI commands. This is the single biggest blocker for full OutSystems DevOps automation. Request: Provide a headless Linux build of Service Studio — or a dedicated CLI package — that supports the full set of headless commands (existing + proposed) on: Ubuntu 22.04 / 24.04 (standard GitHub Actions runners) Alpine Linux (Docker optimization) Debian-based containers 9. ss delete-unused-refs — Delete Unused References from a Module Problem: Over time, modules accumulate references to producers that are no longer used — dead imports that slow down compilation, add maintenance overhead, and generate noise in -refresh / -u verification output. Service Studio can detect these via "Manage Dependencies," but there is no headless way to auto-clean them. 10. ss create-solution — Create Solutions Programmatically Problem: Solutions in OutSystems are the primary vehicle for managing and deploying groups of modules across environments via LifeTime. Creating and maintaining solutions is currently only possible through the Service Center UI. For teams managing complex multi-module deployments, the lack of a CLI solution creator is a significant DevOps gap. Why This Matters: The AI Analysis Use Case The combination of -listModules, -listElements, and the existing -d (diff) enables a use case that is currently impossible: AI-powered static analysis of OutSystems codebases without a running GUI. Current Gap: To analyze an OutSystems application with AI today, a developer must: Manually open each module in Service Studio Navigate through hundreds of screens, actions, and flows Copy/paste relevant information into an AI tool The AI agent can then generate a report like: "Action IsElegivelAntecipacaoDZero (key: 11ea244a-...) accesses the server on every screen load. Consider moving this to an Aggregate with proper caching. → [Open in Service Studio](servicestudio://-downloadAndOpen -eSpaceKey 6acebf97-... -elementKey 11ea244a-... -url bin.dev.myenvironment.com)" This is only possible if -listElements exposes SS_Keys in its output. Summary We are requesting 10 new headless CLI commands for Service Studio, with Linux support as the foundational requirement for CI/CD automation. The existing headless CLI (-d, -refresh, -u, -exportSettings, etc.) proves the architecture is ready. These new commands extend that foundation to cover the full development lifecycle — from introspection and dependency management, to publishing, solution creation, and AI-powered analysis. The OutSystems platform is already exceptionally powerful. These commands make that power accessible to modern DevOps and AI tooling workflows, without changing a single line of platform behavior.
454
Views
2
Comments
New
Service Studio
Created 7 days ago
2025-12-29 12-54-39
Muhammad Shehroz Ali
I have a scenario where I need to search multiple modules so each time I search I open the module and then search and option so its time taking, my suggestion is if I search module Camera I select it and search another module like Common so it open only Common module. This would be solved by simply keeping like multi select user search for the module and selects the module he wants to open and then there a list presented below the selected modules with search box open until user done with selection and when user clicks on open then all selected modules should open. I think that would be a much easier UX, both to implement and to present to the user.
84
Views
1
Comments
New
Service Studio
Created 8 days ago
2025-01-15 08-35-04
Vignesh Sekar
Remove the GetUserId() in Client Actions and Screens to prevent client-side tampering. When developers use GetUserId() on the client side (Reactive/Mobile), that value is compiled into JavaScript. Anyone can open the browser developer tools, manipulate that ID, and potentially spoof another user. AI Mentor Studio already flags client-side GetUserId() as a security vulnerability because browser JavaScript can be manipulated. Instead of detecting this flaw later, OutSystems should remove GetUserId() from Client Actions and Screens entirely. By making it unavailable on the client side, new developers will be forced to use secure server-side session checks from day one. This shifts the platform from detecting vulnerabilities to preventing them, saving time on refactoring and ensuring apps are secure by design.
106
Views
4
Comments
New
Frontend (App Interfaces)
Created on 01 May
UserImage.jpg
Sebastian Marten
The new 1-Click Publish With Message is a good idea, but to be useful, it needs improvements. 1. It should have the ability to hide the normal 1-Click Publish to force messages, or some other way to enforce this 2. The last message should automatically populate a new publish, or maybe a dropdown with the last 5 or so messages.
235
Views
7
Comments
New
1CP
Created on 07 Feb
2024-11-04 15-59-50
João Inácio
Currently, in OutSystems Service Center > Factory > Modules > [Module] > Operation tab, users with "Open" and "Debug" permissions can view essential settings like Audit Stack Display, Run Mode, Debug Mode, Deployment Zone, and Light Logging. However, the critical "Light Process Execution" checkbox—which enables lightweight BPT for improved throughput—is not visible or determinable. This checkbox is shown in full admin views (first attached image), but hidden for Open/Debug users (second attached image), preventing developers from confirming if Light BPT is enabled without elevated access. Requested Feature:Display the "Light Process Execution" setting (checked/unchecked status) in the Operation tab for any user who can access module details via Open/Debug permissions. This ensures consistency: if a user sees module operations, all relevant toggles should be readable. Business Impact: Developers troubleshooting performance can't verify Light BPT without admin help, slowing debugging in teams with role-based access. Promotes self-service in Service Center, aligning with OutSystems' low-code efficiency. No security risk, as it's read-only visibility matching existing fields like Debug Mode. Steps to Reproduce: Log in to Service Center with Open/Debug-only permissions. Navigate to Factory > Modules > [Any module with Light Process]. Go to Operation tab—note "Light Process Execution" is absent. Please prioritize this for better module visibility in O11
270
Views
0
Comments
New
Service Center
Created on 05 Nov 2015
UserImage.jpg
Alexandre Scheurkogel
Hi, I've run into this a few times. I would like to have the ability to do a simple query with an IN clause, without having to rely on advanced queries. It should accept a list of Identifier. Today we do ( from an aggregate perspective): SELECT * FROM {TASKS} WHERE id = 1 or id = 2 or id = 3 But it would be really awesome if we could do SELECT * FROM {Tasks} WHERE id in (1,2,3) This allows us to do some pretty cool stuff with Lists setc ( eg you can now shim some of the more advanced sql functionality without writing advanced queries). An example would be: myList = SELECT id from People WHERE OrganisationId = 2 SELECT * FROM {Tasks} WHERE personId = myList Which would be 2 actions, and somewhat faster/cleaner than the current way Writing an advanced query ( frowned up by my companies' best practices guide - and I've also found advanced queries tend to be annoying to manage ) Looping through myList and putting the outputs into another list, which is then passed around (this also has a few nasties - lots of DB hits (albeit small ones), and refreshing this with paging is a pain
21441
Views
154
Comments
New
Aggregates & Queries
Created on 18 Mar
2019-03-14 16-24-46
Nelson Freitas
Currently, when a mobile or reactive app client disconnects mid-request (e.g. user backgrounds the app, loses network, or a timeout occurs), OutSystems logs the following errors in Service Center as 500-level errors: "The client is disconnected because the underlying request has been completed. There is no longer an HttpContext available." "Failed to send request due to unexpected error" These errors are thrown deep in the ASP.NET/IIS pipeline by the ErrorNotifierModule, below the OutSystems application layer. This means developers have no way to catch or suppress them using OutSystems logic — not through OnException handlers, not through error handling in Client/Screen/Data Actions, and not through any pattern available in Service Studio. Why this is a problem: These errors are not actionable by developers — there is no OutSystems-level fix that prevents them They pollute the error log in Service Center, making it harder to identify real application errors (we currently have an average of 60.000 daily errors like these) They generate false alerts in monitoring tools and APM integrations that consume OutSystems error logs They cause unnecessary noise in production environments, particularly for mobile apps used on unreliable network connections What we are asking for: OutSystems R&D to implement one or both of the following: Suppress specific known client-disconnect exception types (e.g. HttpException with error code 0x800703E3) in the ErrorNotifierModule before they are written to the error log, since these represent expected network-level events, not application bugs Provide a configurable filter mechanism in Service Center or Factory Configuration that allows platform administrators to define error message patterns that should be downgraded (e.g. to a warning) or excluded from the error log entirely Expected outcome: Developers and operations teams can maintain clean, actionable error logs that reflect real application problems — without being forced to implement infrastructure-level workarounds outside the OutSystems platform.
135
Views
1
Comments
New
Database
Created 6 days ago
2026-03-13 16-36-56
getuliogfc
 Problem Debugging Reactive screens can be difficult when developers need to understand the current state of local variables, client variables, input parameters, screen data, and browser storage. How this suggestion can help A dedicated Reactive Debug Panel would give developers a centralized view of the screen state during runtime, reducing the need for temporary labels, console logs, or manual debugging workarounds. Implementation example Add a debug panel available during preview/debug mode showing: Current Screen: RequestDetail Local Variables Client Variables Input Parameters Data Actions Local Storage Session Storage The panel could allow developers to inspect values in real time and optionally copy them as JSON.
27
Views
2
Comments
New
Debugger
Created 11 days ago
2026-03-28 18-29-29
Tiago Silva
On placing an element on the screen and filling, like a dropdown or a input that platform could provide a conventional name for the widget related to the variable name it is set. Instead of Dropdown1, it could be for example DropdownJobTitle if it is related to the JobTitle variable. Same applies to Buttons. This happens on the Input fields of the forms, when the form is auto generated with the Screen Aggregate.
65
Views
1
Comments
New
Service Studio
Created on 15 Mar
2021-08-20 07-40-54
Alexandrino Galveia
Introduce a configuration mechanism that allows to enable or disable Code Quality analysis for specific applications and libraries. This capability would make it possible to exclude test applications, sandbox applications, or temporary applications, preventing them from affecting overall code quality metrics. With this configurable approach, we would gain greater control over which artifacts are included in quality measurements, ensuring that reports remain accurate, relevant, and focused on production-relevant systems.
162
Views
1
Comments
New
Architecture & Governance 
11 to 20 of 10863 records
Top Idea Creators
High Five to the top 5 idea creators in the last 30 days
2026-03-13 16-36-56
5 ideas
Top Brainstormers
High Five to the top 5 brainstormers in the last 30 days
2018-07-06 11-13-55
15 comments
2
2021-09-06 15-09-53
14 comments
3
2024-07-05 14-16-55
6 comments
4
UserImage.jpg
3 comments
Code of Conduct 
The guidelines we live by that make
this Community amazing!
Code of Conduct
Stay Up-To-Date
Keep on top of what's happening in the Developer Community.
Forum, Forge, Training, Documentation, and more!