OutSystems: Bridging business process automation and low-code development

RESEARCH REPORT // FREE
 
OutSystems is a ‘low-code’ model-driven application platform, built from the ground over the past 15 years. Initially offered purely as an on-premises product, OutSystems introduced cloud hosting for its platform in 2013 and now offers its platform as a service on AWS (OutSystems Cloud) and via customer self-service on Microsoft Azure. OutSystems bridges two worlds very effectively indeed: first, the world of business process automation; and second, the world of rapid, low-code application development.

Top takeaways

Model-driven application development with added mobile, cloud and process platform capabilities

OutSystems is a ‘low-code’ model-driven application platform, built from the ground over the past 15 years. OutSystems comprises an integrated suite of application design, development, QA, deployment and management tools that aim to support your organisation across the full application lifecycle – for applications with web and native mobile front-ends, and also for applications that are driven by automated business processes.

Initially offered purely as an on-premises product, OutSystems introduced cloud hosting for its platform in 2013 and now offers its platform as a service on AWS (OutSystems Cloud) and via customer self-service on Microsoft Azure.

Explore OutSystems, particularly if you want to build collections of new cross-platform process applications

OutSystems bridges two worlds very effectively indeed: first, the world of business process automation; and second, the world of rapid, low-code application development. When combined with very strong features that not only help you with the development of mobile apps (including offline working capabilities) but also their deployment and management, the ability to deploy applications on-premise as well as in a variety of cloud-based configurations, and an architecture that supports extensive asset reuse, this is an offering with a lot of compelling capabilities.

It’s also worth highlighting product pricing. Given its functional capabilities, OutSystems stands out in its ability to license you a platform in a way that truly scales your investment with your need and your return.

Introducing OutSystems

Founded in 2001 in Portugal by current CEO Paulo Rosado, OutSystems (depending on your preferred terminology) is a low-code / rapid application development (RAD) platform for enterprise applications. Initially offered purely as an on-premises product, OutSystems introduced cloud hosting for its platform in 2013 and now offers its platform as a service (OutSystems Cloud) and via customer self-service on Microsoft Azure.

The company took on $55m in funding from North Bridge Growth Equity in 2016, and is using this funding to invest significantly in sales, marketing and product development. Prior to this OutSystems took around $3m in funding in 2007 (to support international expansion), and a similar amount in 2005.

OutSystems’ recent funding has fuelled significant growth, and in 2016 the company’s software revenue grew 50% – yielding over $100m total sales in the year. It added 178 new customers to its roster, and now has customers operating in 43 countries, across 22 industries. Outside its native Portugal, OutSystems now has additional offices in the USA, UK, UAE, Singapore, Australia, Netherlands and Japan.

The company pitches OutSystems principally as a vehicle for digital transformation – a way for organisations to rapidly build ‘systems of engagement’ that support digital customer journeys across mobile and web channels, and that link new online experiences to existing enterprise systems. It’s built its tools in a way that allows technical developers to create sophisticated and specialised application functionality, but that also allows relatively non-technical ‘citizen developers’ to quickly build moderately sophisticated applications, while also making use of components built and managed by more technical teams.

Inside the OutSystems offering

OutSystems sells just one core product – also called OutSystems – which it’s built from the ground up over the past 15 years.

OutSystems comprises an integrated suite of application design, development, QA, deployment and management tools that aim to support your organisation across the full application lifecycle. There are four main tools working across the application lifecycle within OutSystems:

  • Service Studio. This graphical Windows-based IDE is where you define the core functionality of your applications, and work with SOAP and REST services to integrate your applications with external systems, applications and data sources. Your application definitions are stored in a team-accessible metadata repository, which can be used for further model analysis or extensions. As you work on your application specifications, Service Studio continuously carries out background referential integrity checks, to ensure that specifications you define in one place (for example in the UI) don’t make out-of-date references to other application elements.
  • Integration Studio. This Windows-based tool is where developers create OutSystems extensions and custom application components for direct integration into application runtimes. Under the covers, Integration Studio uses Microsoft’s Visual Studio development tool.
  • Service Center. This web-based console is used by administrators to manage operations in an OutSystems runtime environment. Administrators use Service Center to configure runtime environments, service endpoints and database connections, start and stop applications, roll back application versions, and so on.
  • LifeTime. This web-based tool is used by teams to manage application and component versions, and deploy them across development, staging and production environments (whether configured on-premises, in OutSystems Cloud Azure or any private cloud environment), and set up and configure user directories and access rules. There’s a helpful dependency-checking tool that ensures any new code can be safely deployed without disrupting or breaking any other deployed code, and there’s also an in-depth performance monitoring tool that enables developers and support personnel to diagnose performance issues within applications. The performance monitoring functionality on offer is unusually deep: it’s possible to explore performance within UI rendering, across different platforms and browsers; network performance, across network connections and data carriers (for mobile apps); and server application performance, across database queries, integration code and so on.

The tools provided with OutSystems give you good support for team working. There’s version management built into the platform, and configuration management is also bolstered by support for the creation and management of reusable modules. Use of modules when designing applications is optional, but highly recommended: by packaging definitions together in modules those definitions are then easily-reusable across applications. OutSystems also provides tools that allow repeated, quick architecture health checks, which help to ensure quality and maintainability as an application portfolio grows.

Although OutSystems is not pitched specifically as a workflow or process application platform, there’s a fully-formed workflow capability present. With OutSystems, you define applications by specifying behaviours using graphical tools within a four-layered logical model:

  • In the data layer, you define business entities and structures. Entities by default map onto relational database tables that your applications will use for persistent storage; as you’d expect with a relational-backed model, you also define relationships between entities in your models. These relationships can also drive referential integrity rules (for example automatically ensuring that all invoice lines are deleted when the associated ‘master’ invoice is deleted). Structures are temporary complex types that you can use to store complex variables (for example, the results of a query that joins two or more entities). When designing mobile apps you can also define ‘local entities’ – where data is persisted in a relational store on mobile devices themselves for offline working.
  • In the interface layer, you define screens for your applications – using layouts and styles for structure and look-and-feel. Layouts are reusable templates for element positioning; styles are reusable CSS definitions. Data input and output are handled through forms, where you have access to all the usual element types you’d expect; navigation links and optional input parameters enable you to specify how UI flows between screens should work. Service Studio enables you to build quick first-cut data input/output forms with default validation logic, by dragging entity definitions onto a screen definition canvas. OutSystems ships with a rich UI framework called Silk UI (silkui.outsystems.com), which includes lots of sample code and pre-built structures to help developers quickly construct UI across web and mobile front-ends. For mobile app development projects, new App Templates provide starter frameworks for common app scenarios, and combine default screens, navigation, business logic and data structures – and a Theme Customiser generates a starter colour scheme for your apps from your organisation’s logo.
  • In the logic layer, you specify custom application logic using a block-structured graphical flow: you can include all the usual flow constructs (choices, loops, etc) that you’d expect. Logic flows (which can be optionally packaged as reusable actions) are typically used to define functionality that customises how your application behaves in response to events (particularly UI events fired when screens load, when data changes, when users navigate, and so on); or to define data-management functionality (for example, validating data before it’s persisted via an entity). For mobile apps, you can also model client-side logic in this way – which enables you to create and reuse navigation flows within mobile apps that support sophisticated offline working. You can also extend logic blocks with your own C# code (for server-resident logic) and Javascript (for mobile client logic).
  • In the process layer, you define workflow models that can blend human and system (automatic) tasks. The notation is OutSystems’ own; there’s no support for BPMN. However all the most common workflow semantics are present: there’s support for start (and conditional start) and end events, decisions, sub-processes, and waits. Typically, processes are linked to entity state changes (for example, triggering an invoice review process when an invoice is created). A tasklist widget called the Taskbox is by default used as the UI container for human tasks; opening tasks automatically opens the relevant task form from the application’s UI. Human tasks that you define can reference written instructions as well as task forms.

Support for mobile apps

Support for the development and management of native mobile apps is unusually strong for a general-purpose application development platform. You can use OutSystems to build mobile apps as well as responsive web apps; and indeed, you can build collections of apps that share a common set of backend components hosting core application and workflow logic, data management and integration services.

There are two choices you have when you specifically want to create and deploy mobile apps (rather than simply providing responsive web UIs for your applications: you can generate native mobile apps and distribute them through the iOS and/or Android apps stores; or you can deploy and execute applications through a hybrid mobile app framework called OutSystems Now. OutSystems Now supports both iOS and Android devices, and acts as a managed container for one or more OutSystems apps, providing access to native device capabilities (camera, GPS, notifications, barcode scanning, Touch ID, etc) through platform-supported plugins. OutSystems Now is available on app stores, so is ideal to use as a rapid prototyping and development pillar – deploying a new application or update doesn’t require any new code to be registered with any app store.

Deployment and extensibility

The application models you create with Service Studio and Integration Studio are compiled as native .NET code (for the server) and as HTML5, Javascript and CSS (for web clients). The platform is also responsible for generating and deploying the required database update scripts, deploying compiled application components to web application server instances (potentially across a farm of servers), and logging application activity. Where you’re building and deploying mobile apps, Platform Server generates device-native IPA (for iOS) or APK (for Android) packages that can be deployed to mobile app stores, or downloaded via OutSystems Now.

When you elect to publish an application, OutSystems carries out an automatic validation across all the specification elements in your application, to ensure that there are no incomplete or out-of-date code or data references present. As mentioned above there are inbuilt source-code control and version control features in OutSystems; however if you have established Continuous Integration / Continuous Deployment (CI/CD) practices in your organisations, OutSystems also publishes an open API that enables you to integrate external builds (using a tool like Jenkins) into the application publication process.

When it comes to integrating external applications and systems into your OutSystems applications, the core OutSystems platform itself offers you fairly limited out-of-the-box options. OutSystems offers a certified SAP Connector, there’s the ability to invoke external REST or SOAP-based services, and database connectors that allow, for example, SQL Azure or IBM DB2 direct connectivity – but little apart from that. However, OutSystems’ extensive developer marketplace, Forge, gives you a host of options.

Forge is an open-source repository that hosts contributions from the OutSystems developer and partner community, as well as from OutSystems itself. Forge hosts connectors for the likes of Salesforce, Twilio, IBM Watson Services, Box, Google Maps, Google Drive, JIRA, Twitter, MQTT and many more.

Beyond the application content available on Forge, you also have the ability to extend OutSystems applications yourself through custom code. The OutSystems application architecture is designed with extensibility in mind, and there are a great many hook points that enable you to call out to your own custom .NET code – from within the interface layer, the logic layer, the process layer and the data layer. You can also customise or extend your web applications with custom HTML, Javascript and CSS.

Partners

OutSystems runs a large and fast-growing implementation partner community that operates worldwide. As well as hosting large multinational consultancies and systems integrators like Deloitte, KPMG, Capgemini, Atos and Cognizant the community also hosts around 200 smaller industry or country specialist consulting / implementation firms.

The OutSystems developer community currently hosts around 140,000 developers.

Packaging and pricing

OutSystems is available in three versions:

  • Free, hosted in the OutSystems Cloud (on AWS) and delivered as a service, gives you the ability to stand up a single environment and build applications for up to 100 users. Community support is your option here.
  • One, available in the OutSystems Cloud and dedicated to you or installable on-premises or on Azure (or in a hybrid configuration), enables you to stand up three separate environments (dev, test and production) and also comes with a commercial support package. The license, billed monthly, currently costs around $25k a year.
  • Enterprise, available for deployment in the same ways as One, offers you the ability to deploy more than three environments, and provides for higher application scalability. The license, billed monthly, currently costs around $55k a year.

License extensions to provide for 24×7 support and increased user numbers are charged additionally.

Recommendation: explore OutSystems, particularly if you want to build collections of new cross-platform process applications

OutSystems bridges two worlds very effectively indeed: first, the world of business process automation; and second, the world of rapid, low-code application development. When combined with very strong features that not only help you with the development of mobile apps (including offline working capabilities) but also their deployment and management, the ability to deploy applications on-premise as well as in a variety of cloud-based configurations, and an architecture that supports extensive asset reuse, this is an offering with a lot of compelling capabilities.

BPM purists might balk at the lack of support for the BPMN standard, but if your goal is to automate business processes as part of a programme that also involves the development of one or more transactional applications, the advantages of OutSystems are likely to outweigh any qualms you might have about the lack of BPMN support.

It’s also worth highlighting product pricing. Given the functional capabilities, OutSystems stands out in its ability to license you a platform in a way that truly scales your investment with your need and return.

Of course OutSystems is not perfect. Looking at its process platform credentials in particular, the platform’s process monitoring features and interface would benefit from more investment. Also, despite its clear ambition to embrace software-as-a-service and self-service concepts the core OutSystems development tools require installation on a Windows client, which most other vendors are moving away from.

Download PDF version
RESEARCH REPORT // FREE