Ideas
10884ideas
Created on 05 Sep 2024
2024-10-15 10-08-31
Tiago Ribeiro
With the surge of AI tools, I've seen more and more database focused companies doing "Schema suggestions". Basically, according to production database traffic the system generates recommendations to improve database performance, reduce memory and storage, and improve the schema. This is what it looks like in PlanetScale: It would be really nice to have something like this in OutSystems. Maybe on AI Mentor?
91
Views
1
Comments
New
AI/ML
Created on 18 Dec 2023
2023-02-15 11-07-55
Evelyn Silva
When using "find usage" to carry out analysis, it is not possible to track your navigation or open multiple tabs. I am doing role analysis of a very large application and I am using the CS module of this application to find the roles of this module in other modules. This way, I can access each screen and components where each role is used. However, when I reach a "Check Role" within an action and do the "find usages" in that "check" I lose where I left off in the first "find usages". From there I have to open "find usages" through the CS module again and look in the list where I had stopped. This makes the work of large analyzes more tiring than it already is. So I believe you can create several tabs for each find usages that we do or create a breadcrumb within the same module so that we can follow the path we took and be able to go back.
150
Views
0
Comments
New
Service Studio
Created on 02 Oct 2025
2022-05-01 03-47-53
Jun Mun Chan
1. Have a 'Yearly' selection Currently, we can select 'Daily, Weekly, Monthly' when we are configuring when timers are suppose to run. It will be a nice to have, if a 'Yearly' selection is available as well. There are some jobs which are only required to run once a year. Currently, we can only build a check, in the logic of the timer, to check whether whether it is a new year before continuing the logic. 2. Have option not to automatically run timer, when it is set from 'Inactive' to 'Active ' We have encountered a situation before, when we need to set the timer to Inactive for debug purposes. As the application is already live in PROD, naturally the status of the timer is Active. Then we found there was a bug, as such, we set the timer to Inactive in PROD, while we are still trying to fix the bug. After fixing and when app was deploy to PROD, we have to switch the timer back to Active. However, once we switch, the timer automatically runs again, even thou it is not the correct time to do so. So our end users panicked, as they know the auto emails, reminders etc, shouldn't be set out during that time of the day. End-users being end-users, they might not understand that we are just trying to fix a bug and then re-activate the timer
79
Views
0
Comments
New
Backend
Created on 16 Sep 2024
2019-04-25 06-46-37
Peter Vermeulen
When deploying applications with DevOps Pipelines using the LifeTime API, the deployment started with the API will skip the "Configuration or confirmation" step and will assign the modules automatically to the "(Main)" catalog causing a lot of manual rework in Service Center assigning the correct catalogs. When exactly the same deployment plan is executed with LifeTime the deploymet stops at the "Configuration or confirmation" step. With this idea, we suggest to apply an option to activate the "Configuration or confirmation" step when a deployment is started via the API. It is not desired to assign the catalogs via the API, however that could be a great additional functionality but it is not desired to get "our" pipeline problem "fixed".
146
Views
1
Comments
New
Lifetime
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!
280
Views
2
Comments
Out of scope
Ideas
Created on 17 Mar 2025
2024-12-27 06-34-00
Suryanarayana Vundru
 To optimize AO usage, multiple Static Entities can be merged into a single Static Entity with an additional "Type" attribute to differentiate records. For example, instead of creating separate Static Entities for Country, Currency, and Language, a single MasterData entity can be used with a Type column to categorize records. This approach significantly reduces AO consumption while maintaining flexibility. By filtering data based on the Type attribute, developers can retrieve only the required records, improving performance and maintainability. This method is particularly useful for applications with multiple Static Entities, ensuring better scalability while keeping AO usage low. Would love to hear feedback on this approach!
131
Views
8
Comments
New
Database
Created on 07 Aug 2019
2018-05-30 09-47-43
José Fábio Vieira
Hello all,When opening a Forge Component in Service Studio, can we improve the experience by having a popup/dialog with 2 options and the proper explanation of the consequences?1. Customization - Service Studio will create a clone of the Forge Component and it will remove any linkage to Forge, you will no longer receive updates and you will be responsible for the maintenance of this customization2. Maintenance/Troubleshoot  - You will be able to change and debug this Forge Component directly in Service Studio and it will continue to receive updates from Forge, any change done which is not in the updated version will be lostI think for  new developers this will avoid the pitfall of changing something and later regret of that decision, by showing a popup with the proper explanation you can have a better decisionThanks in advance,Fábio
632
Views
10
Comments
On our RadarOn our Radar
Service Studio
Created on 31 Oct 2024
2024-10-30 10-26-52
Diogo Martins
It is best not to wait until the ODC migration to address certain tasks but to start in advance. This idea is about enabling AI Mentor to incorporate a ODC Ready validation ensuring a smoother migration process and a more robust migrated ODC application.
205
Views
2
Comments
Out of scope
Architecture & Governance 
Created on 26 Oct 2018
2021-02-02 11-55-27
Tushar Panpaliya
An option to set idle timeout would be helpful. What I mean here is, if a user has logged in into my site/application and has not performed any activity for say 'X' minutes , then hell be logged out.
2812
Views
9
Comments
New
Frontend (App Interfaces)
Created on 25 Mar 2025
2023-12-11 08-54-13
Neha Agrawal
 Description: Automatically convert imported ER diagrams into OutSystems data models, reducing manual effort and accelerating development. Problem: Manual ER diagram translation is slow and error-prone. Solution: Implement an ER diagram import feature with automated entity, attribute, and relationship generation, plus a visual editor and validation. Benefits: Faster development, fewer errors, increased productivity, improved collaboration, and better data governance.
128
Views
3
Comments
New
Database
1051 to 1060 of 10884 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
2021-09-06 15-09-53
8 comments
2
2025-09-02 13-37-45
5 comments
3
2024-07-05 14-16-55
4 comments
4
2020-04-17 08-41-30
3 comments
5
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!