SEO Utils

Stable Version 1.1.0 (O11)
Also available for 7
Published on 14 Mar (7 days ago) by 
Created on 08 April 2013
This component provides additional functionality when you are building or generating SEO-friendly “pretty” URLs
Read More


The current version of the Extension is comprised of 2 Actions/Functions:

GetScreenURL – This function returns the URL of the specified Screen and the accompanying parameters. This action is SEO aware: if there is a Page Rule for the specified page and parameters, it will return this “pretty” URL. Otherwise, the function will return the “normal” URL (including parameters in Query string).

GetCleanArgument – This function prettifies the specified text so that it can be used to produce better-looking URLs. e.g. "'Variable' can not be set if 'Source Entity/Struct' not set" becomes "variable-can-not-be-set-if-source-entity-struct-not-set" (no quotes).

While it’s possible to obtain the “pretty” URL version of the current screen (by calling the GetBookmarkableURL built-in action) and the OutSystems platform already generates “pretty” URL links to other screens in the current eSpace (using any existing Page rules), there is currently  no out-of-the-box way of obtaining the “prettified” URL of an arbitrary screen in some other eSpace.

In the interest of keeping the number of circular references down to a minimum, it’s not uncommon to use an External Site node to jump to a specific screen that resides elsewhere in your factory. This is where GetScreenURL comes in: rather than you hardwiring a path on your inter-eSpace jumps, calling GetScreenURL gives you the right URL by dynamically looking into the platform’s internal metamodel to provide you with the current “pretty” URL if it exists, and the “normal” URL if it does not.

In the same vein, it is not uncommon to have SEO rules where one or more parameters are used strictly for URL decoration purposes. An example is OutSystems’ forum discussion page links such as<id>/<this-is-the-topic-title>

We only really need the <id> to look up the discussion; the last tuple is merely for human and SEO benefit and we must make sure that any odd characters don’t break the URL. This is an obvious example of where you want to use GetCleanArgument: to generate a browser-friendly, human readable snippet to appear in the URLs you assemble.

System Requirements and Limitations

  • Does not support Personal Test Areas (i.e. "Run" from Service Studio) or in-URL (i.e. cookieless) sessions.
  • Certain OutSystems cloud options do not support the underlying SEO feature (e.g. Personal Environment)
What’s new (1.1.0)
  • Updated to use the RuntimePublic.Db API
  • Simplified the code that selects between HTTP and HTTPS link generation
Reviews (0)
Support Options
This component is not supported by OutSystems. You may use the discussion forums to leave suggestions or obtain best-effort support from the community, including from Miguel Seabra Melo who created this component.
SEO Utils has no dependencies.
Component Consumers
No consumers yet.
Weekly Downloads 
Related Components
Silk UI Web
OutSystems R&D
A fully responsive and beautiful UI framework that works within the OutSystems Platform. Build amazing looking applications, in a fraction of the time, which work perfectly across devices. Learn how to start using Silk UI and see the examples at . Obtain assistance on using Silk UI in our forums .
OutSystems UI Mobile
OutSystems R&D
Create amazing native mobile applications using this fully integrated UI framework for OutSystems, with dozens of UI patterns ready to use.
XML Records
Afonso Carvalho
An extension that allows you to convert an hierarchical structure, composed of Records and/or RecordLists to XML. It also allows to read an XML into the structure
More from Miguel Seabra Melo
Test Automator
Test Automator Team
Test Automator is a Browser and Unit Regression Testing tool for the OutSystems Platform, versions 7 and up.
Rodrigo Coutinho
A component with a Xmas spirit!
Application Modulator
Miguel Seabra Melo
The Application Modulatr allows you to easily organize and move modules (eSpaces and Extensions) between applications.