SlideShare una empresa de Scribd logo
1 de 30
| Tenants: A Look Behind The Scenes
Tenants: A Look Behind
The Scenes
| Tenants: A Look Behind The Scenes| Tenants: A Look Behind The Scenes
José
Costa
OutSystems MVP, Senior Trainer | ITUp
@
in
jose.costa@itup.pt
/josecccosta
| Tenants: A Look Behind The Scenes
Multi-tenancy
Multi-tenancy enables a single application server and database
server to provide each customer with their own isolated set of
computing resources.
| Tenants: A Look Behind The Scenes
Demo
Let's create a simple multi-tenant application.
| Tenants: A Look Behind The Scenes
Product
Category
Multi-Tenancy
Users
ACME Syrius Stark
| Tenants: A Look Behind The Scenes
How to Develop
Using Them?
● Set the module Is Multi-tenant
property to Yes
● Entities, Timers and Site
Properties get the module
property by default or you can
(un)set those individually
| Tenants: A Look Behind The Scenes
How to Create Them?
TenantCreate
| Tenants: A Look Behind The Scenes
How to Use Them?
● Create users in the tenants
○ App Users does not do that (more on this later)
○ You need to create an app to do it or install one from Forge:
■ Application Framework, Multitenant Management, ...
● Login with a user and the app will use the data of the corresponding
tenant
| Tenants: A Look Behind The Scenes
Same app, but different Tenants,
thus different Data
| Tenants: A Look Behind The Scenes
Entities
● Not Multi-Tenant
○ Same data independently of the user logged in
○ All data is available
● Multi-Tenant
○ Different data depending on the tenant of the user that logged in
○ Only a subset of data is accessible
○ Data is logically partitioned by the platform
| Tenants: A Look Behind The Scenes
Site Properties
● Not Multi-Tenant
○ One variable
● Multi-Tenant
○ One variable per tenant
| Tenants: A Look Behind The Scenes
Timers
● Not Multi-Tenant
○ One instance of the timer runs
○ Uses data from tenant of User Provider
● Multi-Tenant
○ One instance of the timer per tenant runs for that tenant
○ Each instance uses data of that tenant
| Tenants: A Look Behind The Scenes
TenantId
● Attribute in entity that specifies
the tenant for each record
● Hidden
○ Queries for this Entity
automatically filtered by
TenantId
● Shown
○ Access to all data
| Tenants: A Look Behind The Scenes
Datamodel
| Tenants: A Look Behind The Scenes
Person Data with TenantId
| Tenants: A Look Behind The Scenes
Entity Tenant
Espace_Id
● User Provider
If Is_Active is False for that tenant:
● Users cannot login
● Multi-tenant Timers will not run
● Processes will not run
| Tenants: A Look Behind The Scenes
Entity Espace_Tenant
● Read-only entity
● View that relates the Tenant with
the User Provider Espace
| Tenants: A Look Behind The Scenes
User Providers
● Property in Service Studio
● Two by default (Users and Service
Center)
● Application through which you
manage your users
| Tenants: A Look Behind The Scenes
Creating a User
Provider
(simple way)
● Clone Users
● Change name
● Publish it
| Tenants: A Look Behind The Scenes
Creating a User Provider
(another way)
● Create new application
● Implement the type of login (and
UI) that you want
● Make it Multi-Tenant
● Check the "Is User Provider"
property
| Tenants: A Look Behind The Scenes
Creating a User Provider
(what happens)
● It creates a new tenant that is a user provider
| Tenants: A Look Behind The Scenes
Creating a User Provider
(what happens)
● Your module have tenants that
relate to the user provider
| Tenants: A Look Behind The Scenes
If No User Provider
● User Provider is own module
● Since all modules are tenants
○ useful for these situations
● Data is stored in tenant of the
module
○ even on single tenant apps
| Tenants: A Look Behind The Scenes
UserManager
● Useful in order to use Users to manage multi-tenant users
● Role of Users
● User with UserManager role can create/manage users in its tenant
● You can have an App that assigns the UserManager role to a user in the
tenant
○ When you create the tenant, create straightaway a user in that tenant
with role UserManager
| Tenants: A Look Behind The Scenes
Creating Tenant and User Manager
| Tenants: A Look Behind The Scenes
TenantSwitch
● System Action that allows you in
runtime to change the context
to the specified tenant
● Useful for example in your
custom Users Manager
application
○ Its Login action can use it
to switch to the Tenant of
the User that is logging in
● Note that it logs the user out and
| Tenants: A Look Behind The Scenes
From Single-Tenant to Multi-Tenant
● Entities are created without TenantId
● Entry in Entity Tenant is created for module
● Once Multi-Tenancy is set
○ TenantId is created and populated (with User Provider's Tenant)
○ One View per Tenant for each Entity is created is the database
| Tenants: A Look Behind The Scenes
Processes and Tenants
● Processes use the Tenant from which they started
● TenantSwitch only possible in the OnProcessStart event of the process
● Use the Expose TenantId to access other tenants' data
| Tenants: A Look Behind The Scenes
Issues
● I need physical Database separation
○ Not possible in main OutSystems database
○ But can be done using external database, and using the
SessionSetDBConnection to change the connection string to a
tenant-specific setting
● I need data stripping at low hierarchy levels but managers need to see all
data
○ Can be done with multi-tenancy and manager module(s) where
the tenant id is exposed
| Tenants: A Look Behind The Scenes
Thank You!
@ injose.costa@itup.pt /josecccosta

Más contenido relacionado

La actualidad más candente

Create Amazing Reports in OutSystems
Create Amazing Reports in OutSystemsCreate Amazing Reports in OutSystems
Create Amazing Reports in OutSystemsOutSystems
 
Architecture 101 + Libraries
Architecture 101 + LibrariesArchitecture 101 + Libraries
Architecture 101 + LibrariesOutSystems
 
Using Processes and Timers for Long-Running Asynchronous Tasks
Using Processes and Timers for Long-Running Asynchronous TasksUsing Processes and Timers for Long-Running Asynchronous Tasks
Using Processes and Timers for Long-Running Asynchronous TasksOutSystems
 
Integrate OutSystems With Office 365
Integrate OutSystems With Office 365Integrate OutSystems With Office 365
Integrate OutSystems With Office 365OutSystems
 
Reactive Web Best Practices
Reactive Web Best PracticesReactive Web Best Practices
Reactive Web Best PracticesOutSystems
 
Launching a BPT Process on Entity Update
Launching a BPT Process on Entity UpdateLaunching a BPT Process on Entity Update
Launching a BPT Process on Entity UpdateOutSystems
 
OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A...
 OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A... OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A...
OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A...OutSystemsNeo
 
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...OutSystems
 
Hands-On With Reactive Web Design
Hands-On With Reactive Web DesignHands-On With Reactive Web Design
Hands-On With Reactive Web DesignOutSystems
 
Hardcore CSS Made Easy
Hardcore CSS Made EasyHardcore CSS Made Easy
Hardcore CSS Made EasyJosé Rosário
 
Mobile Synchronization Patterns for Large Volumes of Data
Mobile Synchronization Patterns for Large Volumes of DataMobile Synchronization Patterns for Large Volumes of Data
Mobile Synchronization Patterns for Large Volumes of DataOutSystems
 
Training Webinar: Top front-end techniques for OutSystems
 Training Webinar: Top front-end techniques for OutSystems Training Webinar: Top front-end techniques for OutSystems
Training Webinar: Top front-end techniques for OutSystemsOutSystems
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystemsOutSystems
 
Caching Data in OutSystems: A Tale of Gains Without Pain
Caching Data in OutSystems: A Tale of Gains Without PainCaching Data in OutSystems: A Tale of Gains Without Pain
Caching Data in OutSystems: A Tale of Gains Without PainCatarinaPereira64715
 
Building a Case Management Application
Building a Case Management ApplicationBuilding a Case Management Application
Building a Case Management ApplicationOutSystems
 
Training Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of ApplicationsTraining Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of ApplicationsOutSystems
 
OutSystems Tricks & Tips for Complex UI Integrations
OutSystems Tricks & Tips for Complex UI IntegrationsOutSystems Tricks & Tips for Complex UI Integrations
OutSystems Tricks & Tips for Complex UI IntegrationsOutSystems
 
Building CRUD Wrappers
Building CRUD WrappersBuilding CRUD Wrappers
Building CRUD WrappersOutSystems
 

La actualidad más candente (20)

Create Amazing Reports in OutSystems
Create Amazing Reports in OutSystemsCreate Amazing Reports in OutSystems
Create Amazing Reports in OutSystems
 
Architecture 101 + Libraries
Architecture 101 + LibrariesArchitecture 101 + Libraries
Architecture 101 + Libraries
 
Using Processes and Timers for Long-Running Asynchronous Tasks
Using Processes and Timers for Long-Running Asynchronous TasksUsing Processes and Timers for Long-Running Asynchronous Tasks
Using Processes and Timers for Long-Running Asynchronous Tasks
 
Integrate OutSystems With Office 365
Integrate OutSystems With Office 365Integrate OutSystems With Office 365
Integrate OutSystems With Office 365
 
Reactive Web Best Practices
Reactive Web Best PracticesReactive Web Best Practices
Reactive Web Best Practices
 
OutSystems Platform Troubleshooting
OutSystems Platform TroubleshootingOutSystems Platform Troubleshooting
OutSystems Platform Troubleshooting
 
Launching a BPT Process on Entity Update
Launching a BPT Process on Entity UpdateLaunching a BPT Process on Entity Update
Launching a BPT Process on Entity Update
 
Application Lifetime Management
Application Lifetime ManagementApplication Lifetime Management
Application Lifetime Management
 
OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A...
 OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A... OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A...
OutSystems User Groups - Introduction to OutSystems Architecture (Pune - 7 A...
 
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
 
Hands-On With Reactive Web Design
Hands-On With Reactive Web DesignHands-On With Reactive Web Design
Hands-On With Reactive Web Design
 
Hardcore CSS Made Easy
Hardcore CSS Made EasyHardcore CSS Made Easy
Hardcore CSS Made Easy
 
Mobile Synchronization Patterns for Large Volumes of Data
Mobile Synchronization Patterns for Large Volumes of DataMobile Synchronization Patterns for Large Volumes of Data
Mobile Synchronization Patterns for Large Volumes of Data
 
Training Webinar: Top front-end techniques for OutSystems
 Training Webinar: Top front-end techniques for OutSystems Training Webinar: Top front-end techniques for OutSystems
Training Webinar: Top front-end techniques for OutSystems
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystems
 
Caching Data in OutSystems: A Tale of Gains Without Pain
Caching Data in OutSystems: A Tale of Gains Without PainCaching Data in OutSystems: A Tale of Gains Without Pain
Caching Data in OutSystems: A Tale of Gains Without Pain
 
Building a Case Management Application
Building a Case Management ApplicationBuilding a Case Management Application
Building a Case Management Application
 
Training Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of ApplicationsTraining Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of Applications
 
OutSystems Tricks & Tips for Complex UI Integrations
OutSystems Tricks & Tips for Complex UI IntegrationsOutSystems Tricks & Tips for Complex UI Integrations
OutSystems Tricks & Tips for Complex UI Integrations
 
Building CRUD Wrappers
Building CRUD WrappersBuilding CRUD Wrappers
Building CRUD Wrappers
 

Similar a Tenants: A Look Behind the Scenes

Secure Developer Access at Decisiv
Secure Developer Access at DecisivSecure Developer Access at Decisiv
Secure Developer Access at DecisivTeleport
 
Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Deepu K Sasidharan
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterJulien Dubois
 
Monolithic to Microservices Architecture - STM 6
Monolithic to Microservices Architecture - STM 6Monolithic to Microservices Architecture - STM 6
Monolithic to Microservices Architecture - STM 6Tricode (part of Dept)
 
Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...
Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...
Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...Data Con LA
 
Gnt Flurry
Gnt FlurryGnt Flurry
Gnt FlurrySentifi
 
Drools5 Community Training Module 5 Drools BLIP Architectural Overview + Demos
Drools5 Community Training Module 5 Drools BLIP Architectural Overview + DemosDrools5 Community Training Module 5 Drools BLIP Architectural Overview + Demos
Drools5 Community Training Module 5 Drools BLIP Architectural Overview + DemosMauricio (Salaboy) Salatino
 
Multi-User Android - The Complete Guide (AnDevCon Boston 2014)
Multi-User Android - The Complete Guide (AnDevCon Boston 2014)Multi-User Android - The Complete Guide (AnDevCon Boston 2014)
Multi-User Android - The Complete Guide (AnDevCon Boston 2014)Ron Munitz
 
Gainesville Web Developer Group, Sept 2012
Gainesville Web Developer Group, Sept 2012Gainesville Web Developer Group, Sept 2012
Gainesville Web Developer Group, Sept 2012Daniel Woods
 
Cloudify 4.2 Webinar - Agility & Control
Cloudify 4.2 Webinar - Agility & ControlCloudify 4.2 Webinar - Agility & Control
Cloudify 4.2 Webinar - Agility & ControlCloudify Community
 
Multi tenancy RBAC in a multi-cloud world - webinar
Multi tenancy RBAC in a multi-cloud world - webinarMulti tenancy RBAC in a multi-cloud world - webinar
Multi tenancy RBAC in a multi-cloud world - webinarCloudify Community
 
Ledingkart Meetup #1: Monolithic to microservices in action
Ledingkart Meetup #1: Monolithic to microservices in actionLedingkart Meetup #1: Monolithic to microservices in action
Ledingkart Meetup #1: Monolithic to microservices in actionMukesh Singh
 
Blockade.io : One Click Browser Defense
Blockade.io : One Click Browser DefenseBlockade.io : One Click Browser Defense
Blockade.io : One Click Browser DefenseRiskIQ, Inc.
 
Istio as a Service Mesh
Istio as a Service MeshIstio as a Service Mesh
Istio as a Service MeshKnoldus Inc.
 
FIWARE Developers Week_BootcampWeBUI_presentation1
FIWARE Developers Week_BootcampWeBUI_presentation1FIWARE Developers Week_BootcampWeBUI_presentation1
FIWARE Developers Week_BootcampWeBUI_presentation1FIWARE
 
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureMRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureNGINX, Inc.
 
NetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & ContainersNetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & Containersaspyker
 
My Talk Slides for Clojured Berlin 2019
My Talk Slides for Clojured Berlin 2019My Talk Slides for Clojured Berlin 2019
My Talk Slides for Clojured Berlin 2019Abhishek Amralkar
 

Similar a Tenants: A Look Behind the Scenes (20)

What is Multi-Tenant Architecture ?
What is Multi-Tenant Architecture ?What is Multi-Tenant Architecture ?
What is Multi-Tenant Architecture ?
 
Secure Developer Access at Decisiv
Secure Developer Access at DecisivSecure Developer Access at Decisiv
Secure Developer Access at Decisiv
 
Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipster
 
Monolithic to Microservices Architecture - STM 6
Monolithic to Microservices Architecture - STM 6Monolithic to Microservices Architecture - STM 6
Monolithic to Microservices Architecture - STM 6
 
Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...
Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...
Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...
 
Gnt Flurry
Gnt FlurryGnt Flurry
Gnt Flurry
 
Drools5 Community Training Module 5 Drools BLIP Architectural Overview + Demos
Drools5 Community Training Module 5 Drools BLIP Architectural Overview + DemosDrools5 Community Training Module 5 Drools BLIP Architectural Overview + Demos
Drools5 Community Training Module 5 Drools BLIP Architectural Overview + Demos
 
Multi-User Android - The Complete Guide (AnDevCon Boston 2014)
Multi-User Android - The Complete Guide (AnDevCon Boston 2014)Multi-User Android - The Complete Guide (AnDevCon Boston 2014)
Multi-User Android - The Complete Guide (AnDevCon Boston 2014)
 
Gainesville Web Developer Group, Sept 2012
Gainesville Web Developer Group, Sept 2012Gainesville Web Developer Group, Sept 2012
Gainesville Web Developer Group, Sept 2012
 
Microservices patterns
Microservices patternsMicroservices patterns
Microservices patterns
 
Cloudify 4.2 Webinar - Agility & Control
Cloudify 4.2 Webinar - Agility & ControlCloudify 4.2 Webinar - Agility & Control
Cloudify 4.2 Webinar - Agility & Control
 
Multi tenancy RBAC in a multi-cloud world - webinar
Multi tenancy RBAC in a multi-cloud world - webinarMulti tenancy RBAC in a multi-cloud world - webinar
Multi tenancy RBAC in a multi-cloud world - webinar
 
Ledingkart Meetup #1: Monolithic to microservices in action
Ledingkart Meetup #1: Monolithic to microservices in actionLedingkart Meetup #1: Monolithic to microservices in action
Ledingkart Meetup #1: Monolithic to microservices in action
 
Blockade.io : One Click Browser Defense
Blockade.io : One Click Browser DefenseBlockade.io : One Click Browser Defense
Blockade.io : One Click Browser Defense
 
Istio as a Service Mesh
Istio as a Service MeshIstio as a Service Mesh
Istio as a Service Mesh
 
FIWARE Developers Week_BootcampWeBUI_presentation1
FIWARE Developers Week_BootcampWeBUI_presentation1FIWARE Developers Week_BootcampWeBUI_presentation1
FIWARE Developers Week_BootcampWeBUI_presentation1
 
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureMRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
 
NetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & ContainersNetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & Containers
 
My Talk Slides for Clojured Berlin 2019
My Talk Slides for Clojured Berlin 2019My Talk Slides for Clojured Berlin 2019
My Talk Slides for Clojured Berlin 2019
 

Más de OutSystems

Innovating at the Speed of Business in the High-Bandwidth World of Digital Media
Innovating at the Speed of Business in the High-Bandwidth World of Digital MediaInnovating at the Speed of Business in the High-Bandwidth World of Digital Media
Innovating at the Speed of Business in the High-Bandwidth World of Digital MediaOutSystems
 
Beyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
Beyond “Location”: Informing Real-Estate Decisions Through Innovative TechnologyBeyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
Beyond “Location”: Informing Real-Estate Decisions Through Innovative TechnologyOutSystems
 
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...OutSystems
 
From Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
From Core Systems to Mobile Apps: Digital Transformation from the Inside-OutFrom Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
From Core Systems to Mobile Apps: Digital Transformation from the Inside-OutOutSystems
 
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...OutSystems
 
Fast and Furious: Modernizing Clinical Application
Fast and Furious: Modernizing Clinical ApplicationFast and Furious: Modernizing Clinical Application
Fast and Furious: Modernizing Clinical ApplicationOutSystems
 
Enrich Visually Google Map Information With Layers
Enrich Visually Google Map Information With LayersEnrich Visually Google Map Information With Layers
Enrich Visually Google Map Information With LayersOutSystems
 
Unattended OutSystems Installation
Unattended OutSystems InstallationUnattended OutSystems Installation
Unattended OutSystems InstallationOutSystems
 
Speed up Development by Turning Web Blocks Into First-Class Citizens
Speed up Development by Turning Web Blocks Into First-Class CitizensSpeed up Development by Turning Web Blocks Into First-Class Citizens
Speed up Development by Turning Web Blocks Into First-Class CitizensOutSystems
 
Responsive Ui with Realtime Database
Responsive Ui with Realtime DatabaseResponsive Ui with Realtime Database
Responsive Ui with Realtime DatabaseOutSystems
 
RADS - Rapid Application Design Sprint
RADS - Rapid Application Design SprintRADS - Rapid Application Design Sprint
RADS - Rapid Application Design SprintOutSystems
 
Pragmatic Innovation
Pragmatic InnovationPragmatic Innovation
Pragmatic InnovationOutSystems
 
Troubleshooting Dashboard Performance
Troubleshooting Dashboard PerformanceTroubleshooting Dashboard Performance
Troubleshooting Dashboard PerformanceOutSystems
 
No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...
No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...
No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...OutSystems
 
Neo in Wonderland: Essential Tools for an Outsystems Architect
Neo in Wonderland: Essential Tools for an Outsystems ArchitectNeo in Wonderland: Essential Tools for an Outsystems Architect
Neo in Wonderland: Essential Tools for an Outsystems ArchitectOutSystems
 
Measure Customer Experience of Your OutSystems Web and Mobile Applications
Measure Customer Experience of Your OutSystems Web and Mobile ApplicationsMeasure Customer Experience of Your OutSystems Web and Mobile Applications
Measure Customer Experience of Your OutSystems Web and Mobile ApplicationsOutSystems
 
Link Users to Your Specific Page in a Mobile App With Deeplinks
Link Users to Your Specific Page in a Mobile App With DeeplinksLink Users to Your Specific Page in a Mobile App With Deeplinks
Link Users to Your Specific Page in a Mobile App With DeeplinksOutSystems
 
Setting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
Setting up a Tech Innovation Lab in a Traditional Grocery Retail EnvironmentSetting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
Setting up a Tech Innovation Lab in a Traditional Grocery Retail EnvironmentOutSystems
 
Intro to the Data Grid
Intro to the Data GridIntro to the Data Grid
Intro to the Data GridOutSystems
 
How to Attract and Train Talent in Highly Competitive Markets
How to Attract and Train Talent in Highly Competitive MarketsHow to Attract and Train Talent in Highly Competitive Markets
How to Attract and Train Talent in Highly Competitive MarketsOutSystems
 

Más de OutSystems (20)

Innovating at the Speed of Business in the High-Bandwidth World of Digital Media
Innovating at the Speed of Business in the High-Bandwidth World of Digital MediaInnovating at the Speed of Business in the High-Bandwidth World of Digital Media
Innovating at the Speed of Business in the High-Bandwidth World of Digital Media
 
Beyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
Beyond “Location”: Informing Real-Estate Decisions Through Innovative TechnologyBeyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
Beyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
 
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
 
From Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
From Core Systems to Mobile Apps: Digital Transformation from the Inside-OutFrom Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
From Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
 
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
 
Fast and Furious: Modernizing Clinical Application
Fast and Furious: Modernizing Clinical ApplicationFast and Furious: Modernizing Clinical Application
Fast and Furious: Modernizing Clinical Application
 
Enrich Visually Google Map Information With Layers
Enrich Visually Google Map Information With LayersEnrich Visually Google Map Information With Layers
Enrich Visually Google Map Information With Layers
 
Unattended OutSystems Installation
Unattended OutSystems InstallationUnattended OutSystems Installation
Unattended OutSystems Installation
 
Speed up Development by Turning Web Blocks Into First-Class Citizens
Speed up Development by Turning Web Blocks Into First-Class CitizensSpeed up Development by Turning Web Blocks Into First-Class Citizens
Speed up Development by Turning Web Blocks Into First-Class Citizens
 
Responsive Ui with Realtime Database
Responsive Ui with Realtime DatabaseResponsive Ui with Realtime Database
Responsive Ui with Realtime Database
 
RADS - Rapid Application Design Sprint
RADS - Rapid Application Design SprintRADS - Rapid Application Design Sprint
RADS - Rapid Application Design Sprint
 
Pragmatic Innovation
Pragmatic InnovationPragmatic Innovation
Pragmatic Innovation
 
Troubleshooting Dashboard Performance
Troubleshooting Dashboard PerformanceTroubleshooting Dashboard Performance
Troubleshooting Dashboard Performance
 
No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...
No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...
No API? No Problem! Let the Robot Do Your Work! Web Scraping and Automation W...
 
Neo in Wonderland: Essential Tools for an Outsystems Architect
Neo in Wonderland: Essential Tools for an Outsystems ArchitectNeo in Wonderland: Essential Tools for an Outsystems Architect
Neo in Wonderland: Essential Tools for an Outsystems Architect
 
Measure Customer Experience of Your OutSystems Web and Mobile Applications
Measure Customer Experience of Your OutSystems Web and Mobile ApplicationsMeasure Customer Experience of Your OutSystems Web and Mobile Applications
Measure Customer Experience of Your OutSystems Web and Mobile Applications
 
Link Users to Your Specific Page in a Mobile App With Deeplinks
Link Users to Your Specific Page in a Mobile App With DeeplinksLink Users to Your Specific Page in a Mobile App With Deeplinks
Link Users to Your Specific Page in a Mobile App With Deeplinks
 
Setting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
Setting up a Tech Innovation Lab in a Traditional Grocery Retail EnvironmentSetting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
Setting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
 
Intro to the Data Grid
Intro to the Data GridIntro to the Data Grid
Intro to the Data Grid
 
How to Attract and Train Talent in Highly Competitive Markets
How to Attract and Train Talent in Highly Competitive MarketsHow to Attract and Train Talent in Highly Competitive Markets
How to Attract and Train Talent in Highly Competitive Markets
 

Último

Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 

Último (20)

Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 

Tenants: A Look Behind the Scenes

  • 1. | Tenants: A Look Behind The Scenes Tenants: A Look Behind The Scenes
  • 2. | Tenants: A Look Behind The Scenes| Tenants: A Look Behind The Scenes José Costa OutSystems MVP, Senior Trainer | ITUp @ in jose.costa@itup.pt /josecccosta
  • 3. | Tenants: A Look Behind The Scenes Multi-tenancy Multi-tenancy enables a single application server and database server to provide each customer with their own isolated set of computing resources.
  • 4. | Tenants: A Look Behind The Scenes Demo Let's create a simple multi-tenant application.
  • 5. | Tenants: A Look Behind The Scenes Product Category Multi-Tenancy Users ACME Syrius Stark
  • 6. | Tenants: A Look Behind The Scenes How to Develop Using Them? ● Set the module Is Multi-tenant property to Yes ● Entities, Timers and Site Properties get the module property by default or you can (un)set those individually
  • 7. | Tenants: A Look Behind The Scenes How to Create Them? TenantCreate
  • 8. | Tenants: A Look Behind The Scenes How to Use Them? ● Create users in the tenants ○ App Users does not do that (more on this later) ○ You need to create an app to do it or install one from Forge: ■ Application Framework, Multitenant Management, ... ● Login with a user and the app will use the data of the corresponding tenant
  • 9. | Tenants: A Look Behind The Scenes Same app, but different Tenants, thus different Data
  • 10. | Tenants: A Look Behind The Scenes Entities ● Not Multi-Tenant ○ Same data independently of the user logged in ○ All data is available ● Multi-Tenant ○ Different data depending on the tenant of the user that logged in ○ Only a subset of data is accessible ○ Data is logically partitioned by the platform
  • 11. | Tenants: A Look Behind The Scenes Site Properties ● Not Multi-Tenant ○ One variable ● Multi-Tenant ○ One variable per tenant
  • 12. | Tenants: A Look Behind The Scenes Timers ● Not Multi-Tenant ○ One instance of the timer runs ○ Uses data from tenant of User Provider ● Multi-Tenant ○ One instance of the timer per tenant runs for that tenant ○ Each instance uses data of that tenant
  • 13. | Tenants: A Look Behind The Scenes TenantId ● Attribute in entity that specifies the tenant for each record ● Hidden ○ Queries for this Entity automatically filtered by TenantId ● Shown ○ Access to all data
  • 14. | Tenants: A Look Behind The Scenes Datamodel
  • 15. | Tenants: A Look Behind The Scenes Person Data with TenantId
  • 16. | Tenants: A Look Behind The Scenes Entity Tenant Espace_Id ● User Provider If Is_Active is False for that tenant: ● Users cannot login ● Multi-tenant Timers will not run ● Processes will not run
  • 17. | Tenants: A Look Behind The Scenes Entity Espace_Tenant ● Read-only entity ● View that relates the Tenant with the User Provider Espace
  • 18. | Tenants: A Look Behind The Scenes User Providers ● Property in Service Studio ● Two by default (Users and Service Center) ● Application through which you manage your users
  • 19. | Tenants: A Look Behind The Scenes Creating a User Provider (simple way) ● Clone Users ● Change name ● Publish it
  • 20. | Tenants: A Look Behind The Scenes Creating a User Provider (another way) ● Create new application ● Implement the type of login (and UI) that you want ● Make it Multi-Tenant ● Check the "Is User Provider" property
  • 21. | Tenants: A Look Behind The Scenes Creating a User Provider (what happens) ● It creates a new tenant that is a user provider
  • 22. | Tenants: A Look Behind The Scenes Creating a User Provider (what happens) ● Your module have tenants that relate to the user provider
  • 23. | Tenants: A Look Behind The Scenes If No User Provider ● User Provider is own module ● Since all modules are tenants ○ useful for these situations ● Data is stored in tenant of the module ○ even on single tenant apps
  • 24. | Tenants: A Look Behind The Scenes UserManager ● Useful in order to use Users to manage multi-tenant users ● Role of Users ● User with UserManager role can create/manage users in its tenant ● You can have an App that assigns the UserManager role to a user in the tenant ○ When you create the tenant, create straightaway a user in that tenant with role UserManager
  • 25. | Tenants: A Look Behind The Scenes Creating Tenant and User Manager
  • 26. | Tenants: A Look Behind The Scenes TenantSwitch ● System Action that allows you in runtime to change the context to the specified tenant ● Useful for example in your custom Users Manager application ○ Its Login action can use it to switch to the Tenant of the User that is logging in ● Note that it logs the user out and
  • 27. | Tenants: A Look Behind The Scenes From Single-Tenant to Multi-Tenant ● Entities are created without TenantId ● Entry in Entity Tenant is created for module ● Once Multi-Tenancy is set ○ TenantId is created and populated (with User Provider's Tenant) ○ One View per Tenant for each Entity is created is the database
  • 28. | Tenants: A Look Behind The Scenes Processes and Tenants ● Processes use the Tenant from which they started ● TenantSwitch only possible in the OnProcessStart event of the process ● Use the Expose TenantId to access other tenants' data
  • 29. | Tenants: A Look Behind The Scenes Issues ● I need physical Database separation ○ Not possible in main OutSystems database ○ But can be done using external database, and using the SessionSetDBConnection to change the connection string to a tenant-specific setting ● I need data stripping at low hierarchy levels but managers need to see all data ○ Can be done with multi-tenancy and manager module(s) where the tenant id is exposed
  • 30. | Tenants: A Look Behind The Scenes Thank You! @ injose.costa@itup.pt /josecccosta

Notas del editor

  1. To customers, it appears that they have their own application, when in fact they are using the same app as others but with some customization. So, same physical resources and application runtime, but isolated data
  2. logically partitioned by the platform, as if the other tenants' data doesn't exist at all
  3. This is a join of the Tenant with Person. Notice that if I do not expose the TenantId I also have to specify in Service Studio the Tenant that I want to use...
  4. TenantSwitch will also not work for that tenant.
  5. A User Provider is a Tenant
  6. TenantSwitch does a CommitTransaction