Ideas
10795ideas
Created on 18 Jul 2024
2020-09-14 20-23-58
Goldy Lukka
The server seems to be storing all date/time in UTC format. However while reading the errors/logs and other details in Service Center, the UTC format makes it difficult to comprehend (if the user is in different timezone than UTC). May be we can convert to user's local timezone and display the date (how it happens in react client side).
139
Views
1
Comments
New
Service Center
Created on 18 Nov 2024
2024-10-15 10-08-31
Tiago Ribeiro
A propose a public bug tracker for issues in the OutSystems platform. I understand why OutSystems would be reluctant to do this but here's some advantages: Transparency : a public bug tracker shows commitment to transparency and accountability, building trust with the community and customers. Community Collaboration : it allows users to report bugs, suggest fixes, and contribute to the platform's development. Improved Communication: users get visibility into the status of reported bugs, avoiding redundant reports. Prioritization by Demand : users can vote on issues they care about most, helping OutSystems prioritize fixes based on real-world demand. Knowledge Sharing : a public bug tracker serves as a centralized knowledge base where users can search for known issues and workarounds. ( Disclaimer: an LLM did help me write some of this ) The motivation of this idea comes from the time wasted recently creating support cases for problems that were already identified by the OutSystems team. Many of these problems have forum posts with dead ends, where people were left without an answer. I would imagine this would also free up time from the support team. Cheers, Tiago
94
Views
6
Comments
New
Community
Created on 22 Jan 2025
2024-08-20 07-51-02
David Nieuwenhuizen
OutSystems currently provides local storage only for mobile applications, but adding this feature to reactive web apps would bring significant benefits. Store frequently fetched data locally to prevent server calls. E.g. static entities always could be stored locally. This is already an idea: https://www.outsystems.com/ideas/3497/support-static-entities-in-mobile-app-as-offline-data/ Improve user experience with partial offline capabilities for certain use cases. Please let me know whether there is another solution possible to decrease the amount of server calls then having local storage available for Reactive.
190
Views
6
Comments
New
Frontend (App Interfaces)
Created on 09 Nov 2025
2026-03-27 18-29-15
nana jmecher
Hey everyone 👋 I want to share a new idea I’ve been testing lately — we’ll avoid using Static Entities completely, and instead create Server Functions that return the needed lists. This way, we can keep the same behavior as Static Entities but save several Application Objects (AOs) at the same time. In the example below, I’ll show a simple end-to-end demo where this approach helps me save 3 AOs at once 🚀 Here’s the main concept: No Static Entities Replace them with Server Functions that return lists Keep it reusable, simple, and AO-efficient 👇 Check out the demo below! 🧩 The old approach — using Static Entities Let’s start with a simple example. I have an entity called Activity with the following attributes: Name (Text) Description (Text) StatusId (Identifier) PriorityId (Identifier) ClusterId (Identifier) In a traditional setup, these three “Id” attributes are Foreign Keys to Static Entities: Status – contains values like Open, In Progress, Closed Priority – contains Low, Medium, High Cluster – contains Automation, AI, Data Management, etc. 🚀 The new approach — replacing Static Entities with Server Functions Now, let’s move to the new approach. In this version, I’ve removed all Static Entities — Status, Priority, and Cluster — completely. The ActivityNew entity structure stays the same in terms of logic, but the data types for the linked attributes are changed from Identifier to Text: ⚙️ Step 1 – Creating a base structure for our “static” data Before building the Server Function, let’s first create a structure that will represent our “static entity” values. This structure will be reused by all our functions (Status, Priority, Cluster, etc.). Here’s how to do it: Go to the Data tab → Structures. Create a new structure and name it strStaticEntity. Set Public = Yes (or No, depending on whether you want to reuse it across modules). Add two attributes to this structure: Id (Text) — represents the ID or code value. Label (Text) — represents the display name. (Of course, you can add more attributes if needed — for simplicity, I’ll keep just these two.) This structure will act as the base for all the lists that we’ll expose through our Server Functions. 🧠 Step 2 – Creating the Server Function Now that we have our base structure (strStaticEntity), let’s move on and create the Server Function that will return our “static” data. Go to the Logic tab. In the Server Actions section, create a new folder named StaticEntities — this will help us keep all our functions organized in one place. Inside this folder, create your first Server Function and make sure the Function Property is set to yes 💡 Naming convention: I like to use a small prefix to keep things consistent. For example, I’ll name this function seStatus, where: se stands for Static Entity (so it’s easy to recognize what type of function it is), Status represents the type of data it will return. So the full name seStatus clearly indicates that this function behaves like a Static Entity for Status. Later, I can follow the same pattern for other functions: sePriority – returns the priority list seCluster – returns the cluster list 🧠 Step 3 – Defining inputs and outputs for seStatus Now that we have the function created, we need to define its input and output so it can be used in multiple ways. Input: Name: Identifier Data type: Text Mandatory: No (set to No, because this input is not required all the time) This input will allow us to retrieve a specific label or value when needed. Later, I’ll show exactly how and where to use it in the app. Output: Name: ListOfStatus (or any descriptive name you prefer) Data type: List of strStaticEntity This output will return the full list of statuses, which we can use to populate dropdowns or for other logic that normally relied on the Static Entity. 🧠 Step 4 – Building the function logic in the flow Now it’s time to define the logic inside our seStatus function. Drag a ListAppendAll action into the flow. For the Source property of ListAppendAll, use the output list we previously created (e.g., List). This will allow us to append multiple items to the list at once. Next, we will add individual items representing each status (like Open, In Progress, Closed) to the list using ListAppend actions. Each item will be a strStaticEntity record, with its Id and Label set. By clicking on the plus Sign 🧠 Step 5 – Adding conditional logic and filtering The next step is to drag an If widget into the flow. Why are we doing this? We want to check if the function has been called with the Identifier input: If Identifier = "" (empty), the function will do nothing and simply return the full list. If Identifier ≠ "" (not empty), the function will return only the matching label for the given Identifier. Here’s how to implement this: Drag an If widget into the flow and check: Identifier = "" On the False branch (Identifier is provided): Drag a ListFilter server action into the flow. If you don’t have it yet, bring it in from Manage Dependencies → System. Set the List property of ListFilter to our function’s output list (e.g., ListOfStatus). Set the Condition to: Identifier = Id This will filter the list to only include the item that matches the given Identifier. After the ListFilter, add an Assign widget to update the output: Set ListOfStatus (our function output) = ListFilter.FilteredList 💡 Now the function works for both cases: If no Identifier is provided, it returns the full list. If an Identifier is provided, it returns only the matching item, instead of all labels. 🧠 Step 6 – Using seStatus (and other functions) in the app Let’s say we want to display a list of activities with their Status, Priority, and Cluster. Create a Block where we will handle the data. Inside the block, create a Data Action. Note: I already created some records in ActivityNew. Others can create their own records as needed. After creating the Data Action, drag an Aggregate into the flow: Select ActivityNew as the source. Set the output of the Data Action: Data type: Text Record List Add attributes to the output for the values we want to expose: Name, Status, Priority, Cluster All of them set as Text. Next, drag an Assign widget: Set the output of the Data Action = Aggregate results. Now you will be prompted to map each record attribute: Name → ActivityNew.Name Status →seCluster(ActivityNew.ClustersId).Current.Label <---see how we used our function Priority → sePriority(ActivityNew.PriorityId).Current.Label Cluster → seCluster(ActivityNew.ClusterId).Current.Label 💡 This way, the block will return a list of activities with all the necessary values in text format, fully replacing the need for Static Entities. Now just drag a Table to the block and assign the Output List Use the block to a screan and PUBLISH AND let s see the result 🧠 Step 7 – Observing the results and bonus usage After running the app, you can see the results in the interface: Where Priority is missing, it means that either the Identifier was not set or it was left empty. I did this intentionally to show that the function works correctly and handles missing values gracefully. 💡 Bonus: LET me teach you how to filter by multiple choises The function can also return a full list if no specific Identifier is passed. This is useful when you want to populate dropdowns or lookup values without filtering for a single item. Additionally, you can filter directly in an aggregate using multiple values in the filter, which allows you to dynamically retrieve only the relevant subset of records while still using our server functions. This demonstrates the flexibility of the approach: Single-item lookup using an Identifier. Full list retrieval when no Identifier is provided. Optional filtering at the aggregate level for more complex scenarios. 🧠 Step 8 – Creating a reusable Data Action for Filters / Dropdowns In the block, we will create another Data Action, called Filter/Dropdowns: The purpose of this Data Action is dual: To populate dropdowns. To provide a filtered list when needed. For the output, set the name as you like (e.g., List) and set the data type to List of strStaticEntity. Flow setup: Drag an Assign widget into the flow. Assign the output (List) to the result of our server function. Example: List = seStatus() Notice we don’t pass any Identifier here, so the function will return the full list. 💡 This pattern works the same for other static-like data: sePriority() → returns all priorities seCluster() → returns all clusters This allows you to re-use the same Data Action for multiple dropdowns or filtering scenarios without creating multiple static entities. Ok now For the Bonus Let me show you how to filter in aggregate for multiple filter Get The String_Jon in action from manage dependencies Create a variable called StatusFilter or whatever you want(we gonna store here our multiple ids for filtering) Go to our aggregate in the data action add this filter I am using DropdownSearch but you can use also DropdownTags, but make sure that the allow multiple choise is set tot true Bring String_Join action to the DropdownSearchOnchanged Action and set the list input to be selectedoption list from the exxpresion editor and add "," as separator Assign Variable StatusFilters to be = to the output of the stringJoin action, then refresh the data action that get our activities and THAT IS ALL, let` s test it!!! As you can see it s working for single choise But Also For Multiple Thank you All and feel free to reply with your thoughts or improvements!
246
Views
2
Comments
Out of scope
Ideas
Created on 09 Nov 2023
2023-04-06 11-24-23
Paulo Zacarias
When on the ODC Portal, the user can view and configure the apps that are in each Stage, however, the navigation through these can be enhanced. Currently, when the user accesses the Apps menu, and then opens an Application, the Stage is always set as Development . Even if the users change the Stage to QA for instance, when navigating back to the Apps list, and opening another App, the Stage is reset to Development . This is annoying because if the user is performing a considerable amount of configurations, he/she is always obliged to change the Stage for each App he/she wants to configure. What do you think of keeping the value of the Stage in a client variable? This way it would facilitate a lot of the scenario described above as it would be a lot less clicks to reach the same goal.
159
Views
0
Comments
New
Cloud
Created on 12 Nov 2013
2019-11-22 10-08-15
Helio Pimenta
Ability to zoom in and out in the main window in order to have a better control when inserting or moving elements.
2734
Views
45
Comments
On our RadarOn our Radar
Service Studio
Created on 17 Aug 2020
2025-11-19 06-14-01
Miguel Verdasca
Hi guys,A question that everyone has been asking after changing the certifications, and with this I think that was pleasing to many ... is why the specialization in Mobile does not appear in the Diploma that we download. I think it would be an asset to have this information also present in our certifications (and specializations) diploma from OutSystems.Cheers,Miguel
833
Views
5
Comments
New
Training
Created on 13 Jun 2024
2022-05-31 12-16-25
Sebastian Lund
Currently "da - Danish" is missing from the OutSystems UI library. As mentioned in this thread https://www.outsystems.com/forums/discussion/57768/outsystems-ui-allows-for-translations-on-outsystems-ui-widgets/ we can not add this ourselves, so we hope this can be resolved by the OutSystems team.
189
Views
2
Comments
New
OutSystems UI
Created on 30 Jan 2019
2015-07-31 12-31-06
Póvoa
The option to remove unused dependencies by eSpace is realy great! But I think it can be implemented to Applications at all. It wold be nice to have an option in ServiceCenter to remove all unused dependencies by an Application.
982
Views
8
Comments
New
Service Center
Created on 05 Mar 2021
2016-08-03 10-35-38
Alexander van Lieshout
Hi all,I would like to request an addition to the configuration tool/ server.hsconf.More and more we run into customers hosting there OutSystem platform in Azure resources segmented in a dev/tst, acc and prod subscriptions, resource groups, ect…. Each segment with its own servers, scale sets and a SQL managed instances to provide database needs. With an Azure Active Directory tenant to provide users authentication for the platform, and no “real” AD in sight.On the application side this handled beautifully by OutSystems. But in the situation above we are currently forced to use SQL authentication because there is no option to manage user authentication for the back end via ADD.Can you please add the option to use ADD users, service principals and/or managed identities as an authentication mechanism in the connection between the platform and an ASMI?! This for manageability and security benefits.Thanks in advance!
599
Views
1
Comments
New
Backend
691 to 700 of 10795 records
Top Idea Creators
High Five to the top 5 idea creators in the last 30 days
2018-07-06 11-13-55
12 ideas
2
2024-11-06 14-58-26
5 ideas
5
2023-11-30 14-07-30
1 ideas
Top Brainstormers
High Five to the top 5 brainstormers in the last 30 days
2018-07-06 11-13-55
24 comments
2
2024-07-05 14-16-55
12 comments
3
2025-09-29 14-02-19
3 comments
4
2026-01-08 12-54-39
2 comments
5
2020-09-15 13-07-23
2 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!