SlideShare a Scribd company logo
Vision and Scope Document | SSRS Prototype
Row Level Security (RLS)
Version 1.0
Vision and Scope Document | SSRS Prototype, Row Level Security (RLS)
© AIM Business Driven Data Solutions, 2019 Page 2 of 9
Vision
Pam Lehmann and Brian Leslie have identified a need to provide Row Level Security (RLS) a Microsoft Application (SQL
Server Reporting Services [SSRS]) to service new and existing Sales, Finance, and Operations reports. The source for
these reports originate from TricorBraun’s ERP system Microsoft Dynamics 365. There are two Dynamics 365
applications that are currently being considered as sources for this initiative. These Dynamics 365 applications are Sales
(CRM) and Finance and Operations. Below are the identified Executive Leadership and Stakeholders from TricorBraun:
• Jeff Douglas, VP Sales Effectiveness
• Bill Stultz, VP of Finance for System’s Controller, Finance (Executive Champion)
• Dave Duxbury, VP of Operations, GSC – Logistics (Executive Champion)
• Doug Bolen, Chief Information Officer
• Pam Lehmann, Director, Applications, IT
• Brain Leslie, Senior Reporting Analyst, IT
• Donovan Foster, IT Consultant, PMO, IT
• Sarah Thomason, Project Manager
• Mike Lang, Consultant - RSM
Due to the complexity of this initiative, it has been decided to complete a SSRS RLS Prototype before we complete the
final, expanded Vision Scope Document and the final Design Document. This Vision Scope Document is of limited scope
just for the prototype. As the team at TricorBraun identify and finalize the expanded scope, we will document and
append to an Expanded Vision Scope Document intended for the final design and development, not the prototype.
For the SSRS RLS prototype, we will be using the Daily Gross Profit Report. This SSRS report uses 1 main stored
procedure and a few stored procedures to support report parameters. RLS will need to be applied to the main stored
procedure as well as the stored procedures to support report parameters. The deliverable and timeline for the SSRS RLS
prototype depends heavily on how the stored procedures are built and how they query the Division, Region, and
Customer dimensions. This process will be different for each stored procedure for every SSRS report. In extreme
conditions, the stored procedures may need to be totally recreated to apply where clause filters early in the stored
procedure, or to apply more complex where clause filters using a case statement.
SSRS is not Role based security so an entitlement table will need to be created. The stored procedure logic (in all SPs)
will need to be able to determine from the entitlement table where to apply the where clause it the code. It is possible
that a case statement can be used to change the where clause based on what is stored in the entitlement table so that
during different cases, the where clause will filter the Division table, and in another case the where clause will filter the
region table. However, only one (1) table can be used to filter (Division, Region, or Customer). Understanding how this
will work and the impact on the star schema is a major reason for prototyping the SSRS RLS scenario. Complexities in this
SSRS prototype may extend the projected timelines.
Approach
The SSRS RLS prototype will require the entitlement table be populated with AD Usernames and one (1) table to filter
either Division, Region, or Customer. This table will also need all of the divisions, regions, or customers a user can see.
SQL Server Reporting Services (SSRS) 2017 and Visual Studio 2017 will be used to develop the RLS prototype for SSRS.
The SSRS prototype will use an entitlement table and modified stored procedures where the user's place in the
Vision and Scope Document | SSRS Prototype, Row Level Security (RLS)
© AIM Business Driven Data Solutions, 2019 Page 3 of 9
organization are used to determine which divisions, regions, and customers a user can access. The prototype will use an
entitlement table to apply RLS to the user's place in the organization for only one (1) of the following: divisions, regions,
or customers for any given user.
Our goal for these prototypes is to apply RLS to the most common security scenario, not the exceptions. We have agreed
to the idea that the prototypes should target the 80/20 business rule.
Deliverables
SSRS RLS has one (1) deliverable:
• Development RLS Prototype for SSRS Start Date: 3/28/2019 End Date: 4/18/2019
o Multiple personas plus Business User Personas (no AD Groups)
o A complex security model using division, region, and customer tables (to apply RLS), an entitlement table, and a
User (contains User Login ID) table.
o Apply RLS to 1 Identified SSRS Report and add Predicate Functions, Security Predicates / Policies, and DB Roles
o Uses production data for one (1) business defined test SSRS report, stored procedure and parameters
o Manual process to load the security entitlement table and the security User table with test data (minimal rows)
o 1 Entitlement table to store all Division, Region, and Customer security details as well as the AD User Name
Clarifications
These are the clarification for the RLS project:
• The SSRS prototype and development for RLS will use 1 identified SSRS Report and one (1) related Stored Procedure
• The business and IT teams will develop and maintain the one (1) identified SSRS report and one (1) related stored procedure
• The business and IT teams will develop and maintain the one (1) Entitlement table and ETL for this entitlement table
• The business and IT teams will develop and maintain one (1) security User table and ETL for this User table
• SSRS is not a modeling tool, so AD Group Names are not Usable with Security tables (only AD User Names)
• The business and IT teams will develop and maintain one (1) Invoice Star Schema and ETL for that Star Schema
• Effort estimates are based on 100% resource utilization. Sprints with less than 100% resource utilization, unplanned
maintenance, or non-concurrent development blocks of time may result in increased timelines and end dates.
How to get the Job Done
We will be using the following processes and tools to complete this project and deliverables:
• Azure DevOps (VSTS)
• Team Foundation Services, or Git (TBD), since both are used at TricorBraun for Source Control and Change Management
• We are limiting the work-in-progress by using properly planned deliverables
• PBIs, Tasks, and Kanban Boards will be used as part of Azure DevOps (VSTS)
o Product backlog
o Tasks
o Weekly PowerPoint Updates
o Sprints are not used at TricorBraun
• A scope change log for this document will be used to manage change in an Agile fashion
o Name
o Description (Impact)
o Version
o Requested By
o Approved By
o Date
Vision and Scope Document | SSRS Prototype, Row Level Security (RLS)
© AIM Business Driven Data Solutions, 2019 Page 4 of 9
Change Log
Name Description (Impact) Version Requested By Approved By Date
Vision and Scope Document | SSRS Prototype, Row Level Security (RLS)
© AIM Business Driven Data Solutions, 2019 Page 5 of 9
Appendix A | SSRS, RLS Security Tables
The RLS prototype and development use a complex security model using division, region, and customer tables
(dimensions to apply RLS), an entitlement table, and User (contains AD User Name) table.
Entitlement Table
ADUserName TotalCompany DivisonSecurityID RegionSecurityID AccountNum
tricorbraunryan.casey - - Reg_TX -
tricorbraunbleslie Yes - - -
tricorbraunplehmann Yes - - -
tricorbraunsthomason - Div_SW - -
tricorbraunklahiri - - Reg_TX -
tricorbraunszhang - - - 105288
tricorbraunpkurra - Div_SW - -
tricorbraunrkitsch - - - 105305
… Additional Users … … … …
Many
to
1
User Table
ADUserName
tricorbraunryan.casey
tricorbraunbleslie
tricorbraunplehmann
tricorbraunsthomason
tricorbraunklahiri
tricorbraunszhang
tricorbraunpkurra
tricorbraunrkitsch
… Additional Users
Vision and Scope Document | SSRS Prototype, Row Level Security (RLS)
© AIM Business Driven Data Solutions, 2019 Page 6 of 9
Appendix B | SSRS Security Flow Diagram
SSRS Report
Row Level Security | SSRS Security Flow Diagram
Parameter
Stored Procedures
Get @SecurityType
from Entitlement
Table (Division,
Region, Customer)
Where Clause Predicate
Select * from FinalResultsSet F
LEFT JOIN EntitlementTable E1
ON F.DivisonID = E1.DivisonID
LEFT JOIN EntitlementTable E2
ON F.RegionID = E2.RegionID
LEFT JOIN EntitlementTable E3
ON F.AccountNum = E3.AccountNum
WHERE CASE
WHEN @SecurityType = 'Division'
THEN F.DivisionID IN E1.DivisionID
WHEN @SecurityType = 'Region'
THEN F.RegionID IN E2.RegionID
WHEN @SecurityType = 'Customer'
THEN F.AccountNum IN
E3.AccountNum
ELSE 1
END IN COALESE(E1.DivisionID,
E2.RegionID, E3.AccountNum, 1)
Parameter
Stored Procedures
Get @SecurityType
from Entitlement
Table (Division,
Region, Customer)
Where Clause Predicate
Select * from FinalResultsSet F
LEFT JOIN EntitlementTable E1
ON F.DivisonID = E1.DivisonID
LEFT JOIN EntitlementTable E2
ON F.RegionID = E2.RegionID
LEFT JOIN EntitlementTable E3
ON F.AccountNum = E3.AccountNum
WHERE CASE
WHEN @SecurityType = 'Division'
THEN F.DivisionID IN E1.DivisionID
WHEN @SecurityType = 'Region'
THEN F.RegionID IN E2.RegionID
WHEN @SecurityType = 'Customer'
THEN F.AccountNum IN
E3.AccountNum
ELSE 1
END IN COALESE(E1.DivisionID,
E2.RegionID, E3.AccountNum, 1)
Main
Stored Procedure
Where Clause Predicate
Select * from FinalResultsSet F
LEFT JOIN EntitlementTable E1
ON F.DivisonID = E1.DivisonID
LEFT JOIN EntitlementTable E2
ON F.RegionID = E2.RegionID
LEFT JOIN EntitlementTable E3
ON F.AccountNum = E3.AccountNum
WHERE CASE
WHEN @SecurityType = 'Division'
THEN F.DivisionID IN E1.DivisionID
WHEN @SecurityType = 'Region'
THEN F.RegionID IN E2.RegionID
WHEN @SecurityType = 'Customer'
THEN F.AccountNum IN
E3.AccountNum
ELSE 1=1
END
Get @SecurityType
from Entitlement
Table (Division,
Region, Customer)
Main
Stored Procedure
Where Clause Predicate
Select * from FinalResultsSet F
LEFT JOIN EntitlementTable E1
ON F.DivisonID = E1.DivisonID
LEFT JOIN EntitlementTable E2
ON F.RegionID = E2.RegionID
LEFT JOIN EntitlementTable E3
ON F.AccountNum = E3.AccountNum
WHERE CASE
WHEN @SecurityType = 'Division'
THEN F.DivisionID IN E1.DivisionID
WHEN @SecurityType = 'Region'
THEN F.RegionID IN E2.RegionID
WHEN @SecurityType = 'Customer'
THEN F.AccountNum IN
E3.AccountNum
ELSE 1=1
END
Get @SecurityType
from Entitlement
Table (Division,
Region, Customer)
** The case statement in the
Where clause needs to be proved
to work. If the example to the left
won t work, we will have to Create
a Comma Separated String when
we Get The Security Type.
Where Clause Predicate
Select * from FinalResultsSet F
WHERE CASE
WHEN @SecurityType = 'Division'
THEN F.DivisionID
WHEN @SecurityType = 'Region'
THEN F.RegionID
WHEN @SecurityType = 'Customer'
THEN F.AccountNum
ELSE 1
END IN @CommaSeperatedString
Get @SecurityType
and
@CommaSeperated
String
SSRS Report
Row Level Security | SSRS Security Flow Diagram
Parameter
Stored Procedures
Get @SecurityType
from Entitlement
Table (Division,
Region, Customer)
Where Clause Predicate
Select * from FinalResultsSet F
LEFT JOIN EntitlementTable E1
ON F.DivisonID = E1.DivisonID
LEFT JOIN EntitlementTable E2
ON F.RegionID = E2.RegionID
LEFT JOIN EntitlementTable E3
ON F.AccountNum = E3.AccountNum
WHERE CASE
WHEN @SecurityType = 'Division'
THEN F.DivisionID IN E1.DivisionID
WHEN @SecurityType = 'Region'
THEN F.RegionID IN E2.RegionID
WHEN @SecurityType = 'Customer'
THEN F.AccountNum IN
E3.AccountNum
ELSE 1
END IN COALESE(E1.DivisionID,
E2.RegionID, E3.AccountNum, 1)
Main
Stored Procedure
Where Clause Predicate
Select * from FinalResultsSet F
LEFT JOIN EntitlementTable E1
ON F.DivisonID = E1.DivisonID
LEFT JOIN EntitlementTable E2
ON F.RegionID = E2.RegionID
LEFT JOIN EntitlementTable E3
ON F.AccountNum = E3.AccountNum
WHERE CASE
WHEN @SecurityType = 'Division'
THEN F.DivisionID IN E1.DivisionID
WHEN @SecurityType = 'Region'
THEN F.RegionID IN E2.RegionID
WHEN @SecurityType = 'Customer'
THEN F.AccountNum IN
E3.AccountNum
ELSE 1=1
END
Get @SecurityType
from Entitlement
Table (Division,
Region, Customer)
** The case statement in the
Where clause needs to be proved
to work. If the example to the left
won t work, we will have to Create
a Comma Separated String when
we Get The Security Type.
Where Clause Predicate
Select * from FinalResultsSet F
WHERE CASE
WHEN @SecurityType = 'Division'
THEN F.DivisionID
WHEN @SecurityType = 'Region'
THEN F.RegionID
WHEN @SecurityType = 'Customer'
THEN F.AccountNum
ELSE 1
END IN @CommaSeperatedString
Get @SecurityType
and
@CommaSeperated
String
Vision and Scope Document | SSRS Prototype, Row Level Security (RLS)
© AIM Business Driven Data Solutions, 2019 Page 7 of 9
Appendix C | Security Division ID
-- [Invoicing].[dbo].[DimDivision] with SecurityDivisionID
SELECT TOP (1000) [DivisionKey]
,[DivisionId]
,CASE
WHEN [DivisionId] = 'Central' THEN 'Central'
WHEN [DivisionId] = 'Div_CCE' THEN 'Div_CCE'
WHEN [DivisionId] = 'Div_Intl' THEN 'Div_Intl'
WHEN [DivisionId] = 'Div_MNA' THEN 'Div_MNA'
WHEN [DivisionId] = 'Div_NE' THEN 'Div_NE'
WHEN [DivisionId] = 'Div_NW' THEN 'Div_NW'
WHEN [DivisionId] = 'Div_Other' THEN 'Div_Other'
WHEN [DivisionId] = 'Div_PkgAll' THEN 'Div_PkgAll'
WHEN [DivisionId] = 'Div_PNW' THEN 'Div_PNW'
WHEN [DivisionId] = 'Div_SE' THEN 'Div_SE'
WHEN [DivisionId] = 'Div_SW' THEN 'Div_SW'
WHEN [DivisionId] = 'Div_Taipak' THEN 'Div_Taipak'
WHEN [DivisionId] = 'Div_WP' THEN 'Div_WP'
WHEN [DivisionId] = 'International' THEN 'International'
WHEN [DivisionId] = 'Midwest' THEN 'Midwest'
WHEN [DivisionId] = 'MNA_Div' THEN 'MNA_Div'
WHEN [DivisionId] = 'Other' THEN 'Other'
WHEN [DivisionId] = 'PNW_Div' THEN 'PNW_Div'
WHEN [DivisionId] = 'Taipak_Div' THEN 'Taipak_Div'
WHEN [DivisionId] = 'Unknown' THEN 'Unknown'
WHEN [DivisionId] = 'West' THEN 'West'
WHEN [DivisionId] = 'Wine' THEN 'Wine'
END [SecurityDivisionID]
,[DivisionDescription]
,[CreatedDate]
,[CreatedBy]
,[UpdatedDate]
,[UpdatedBy]
,[SortOrder]
,[IsActive]
FROM [Invoicing].[dbo].[DimDivision]
ORDER BY [DivisionId]
Vision and Scope Document | SSRS Prototype, Row Level Security (RLS)
© AIM Business Driven Data Solutions, 2019 Page 8 of 9
Appendix D | Security Region ID
-- [Invoicing].[dbo].[DimRegion] with SecurityRegionID--
SELECT TOP (1000) [RegionKey] ,[RegionId]
,CASE
WHEN [RegionId] = 'Acedo' THEN 'Acedo'
WHEN [RegionId] = 'Binkowski' THEN 'Binkowski'
WHEN [RegionId] = 'Borras' THEN 'Borras'
WHEN [RegionId] = 'Bottene' THEN 'Bottene'
WHEN [RegionId] = 'Briggs' THEN 'Briggs'
WHEN [RegionId] = 'Caldwell' THEN 'Caldwell'
WHEN [RegionId] = 'Canada' THEN 'Canada'
WHEN [RegionId] = 'Danheiser' THEN 'Danheiser'
WHEN [RegionId] = 'Davis' THEN 'Davis'
WHEN [RegionId] = 'DuClos' THEN 'DuClos'
WHEN [RegionId] = 'Europe' THEN 'Europe'
WHEN [RegionId] = 'Forbes' THEN 'Forbes'
WHEN [RegionId] = 'Gibbs' THEN 'Gibbs'
WHEN [RegionId] = 'Kliska' THEN 'Kliska'
WHEN [RegionId] = 'Logue' THEN 'Logue'
WHEN [RegionId] = 'Mexico' THEN 'Mexico'
WHEN [RegionId] = 'MidAtlantic' THEN 'MidAtlantic'
WHEN [RegionId] = 'MidMountain' THEN 'MidMountain'
WHEN [RegionId] = 'MidSouth' THEN 'MidSouth'
WHEN [RegionId] = 'Midwest' THEN 'Midwest'
WHEN [RegionId] = 'Muster' THEN 'Muster'
WHEN [RegionId] = 'Northeast' THEN 'Northeast'
WHEN [RegionId] = 'Northwest' THEN 'Northwest'
WHEN [RegionId] = 'Other' THEN 'Other'
WHEN [RegionId] = 'OtherRegion' THEN 'OtherRegion'
WHEN [RegionId] = 'PkgDesign' THEN 'PkgDesign'
WHEN [RegionId] = 'POD' THEN 'POD'
WHEN [RegionId] = 'PODRegion' THEN 'PODRegion'
WHEN [RegionId] = 'SalesInit' THEN 'SalesInit'
WHEN [RegionId] = 'Simpson' THEN 'Simpson'
WHEN [RegionId] = 'Small' THEN 'Small'
WHEN [RegionId] = 'Southeast' THEN 'Southeast'
WHEN [RegionId] = 'Southwest' THEN 'Southwest'
WHEN [RegionId] = 'Taylor' THEN 'Taylor'
WHEN [RegionId] = 'Texas' THEN 'Texas'
WHEN [RegionId] = 'Unknown' THEN 'Unknown'
WHEN [RegionId] = 'WinePak' THEN 'WinePak'
WHEN [RegionId] = 'Taipak_Reg' THEN 'Taipak_Reg'
WHEN [RegionId] = 'MNA_Reg' THEN 'MNA_Reg'
WHEN [RegionId] = 'PNW_Reg' THEN 'PNW_Reg'
WHEN [RegionId] = 'San_Fran_Reg' THEN 'San_Fran_Reg'
WHEN [RegionId] = 'Reg_CE' THEN 'Reg_CE'
WHEN [RegionId] = 'Reg_EU' THEN 'Reg_EU'
WHEN [RegionId] = 'Reg_MME' THEN 'Reg_MME'
WHEN [RegionId] = 'Reg_MNA' THEN 'Reg_MNA'
WHEN [RegionId] = 'Reg_MS' THEN 'Reg_MS'
WHEN [RegionId] = 'Reg_MW' THEN 'Reg_MW'
WHEN [RegionId] = 'Reg_NE' THEN 'Reg_NE'
WHEN [RegionId] = 'Reg_Other' THEN 'Reg_Other'
WHEN [RegionId] = 'Reg_PNW' THEN 'Reg_PNW'
WHEN [RegionId] = 'Reg_POD' THEN 'Reg_POD'
WHEN [RegionId] = 'Reg_SE' THEN 'Reg_SE'
WHEN [RegionId] = 'Reg_SF' THEN 'Reg_SF'
WHEN [RegionId] = 'Reg_SW' THEN 'Reg_SW'
WHEN [RegionId] = 'Reg_Taipak' THEN 'Reg_Taipak'
WHEN [RegionId] = 'Reg_TX' THEN 'Reg_TX'
WHEN [RegionId] = 'Reg_CW' THEN 'Reg_CW'
WHEN [RegionId] = 'Reg_MX' THEN 'Reg_MX'
WHEN [RegionId] = 'Reg_WP' THEN 'Reg_WP'
WHEN [RegionId] = 'Reg_PkgAll' THEN 'Reg_PkgAll'
END [SecurityRegionID]
,[RegionDescription],[CreatedDate],[CreatedBy],[UpdatedDate],[UpdatedBy],[IsActive]
FROM [Invoicing].[dbo].[DimRegion]
Vision and Scope Document | SSRS Prototype, Row Level Security (RLS)
© AIM Business Driven Data Solutions, 2019 Page 9 of 9

More Related Content

What's hot

ERP Data Migration Methodologies
ERP Data Migration MethodologiesERP Data Migration Methodologies
ERP Data Migration MethodologiesAhmed M. Rafik
 
Big Data and BI Tools - BI Reporting for Bay Area Startups User Group
Big Data and BI Tools - BI Reporting for Bay Area Startups User GroupBig Data and BI Tools - BI Reporting for Bay Area Startups User Group
Big Data and BI Tools - BI Reporting for Bay Area Startups User Group
Scott Mitchell
 
MSBI-SQL Server Reporting Services
MSBI-SQL Server Reporting ServicesMSBI-SQL Server Reporting Services
MSBI-SQL Server Reporting Services
Thejaswi shasthri
 
SAP BW vs Teradat; A White Paper
SAP BW vs Teradat; A White PaperSAP BW vs Teradat; A White Paper
SAP BW vs Teradat; A White PaperVipul Neema
 
SAP HANA Integrated with Microstrategy
SAP HANA Integrated with MicrostrategySAP HANA Integrated with Microstrategy
SAP HANA Integrated with Microstrategy
snehal parikh
 
Data flow in Extraction of ETL data warehousing
Data flow in Extraction of ETL data warehousingData flow in Extraction of ETL data warehousing
Data flow in Extraction of ETL data warehousingDr. Dipti Patil
 
Sql business intelligence
Sql business intelligenceSql business intelligence
Sql business intelligence
Sqlperfomance
 
prime_bi_brochure
prime_bi_brochureprime_bi_brochure
prime_bi_brochureTiago Felix
 
Presentation 1 - SSRS (1)
Presentation 1 - SSRS (1)Presentation 1 - SSRS (1)
Presentation 1 - SSRS (1)Anurag Rana
 
Database migration
Database migrationDatabase migration
Database migration
MoniqueO Opris
 
Unified Enterprise Data Mapping, Governance & Automation Platform
Unified Enterprise Data Mapping, Governance & Automation PlatformUnified Enterprise Data Mapping, Governance & Automation Platform
Unified Enterprise Data Mapping, Governance & Automation Platform
AnalytiX DS
 
SSRS 2008 R2
SSRS 2008 R2SSRS 2008 R2
SSRS 2008 R2
tomerl
 
Whats New Sql Server 2008 R2
Whats New Sql Server 2008 R2Whats New Sql Server 2008 R2
Whats New Sql Server 2008 R2
Eduardo Castro
 
Basics & Intro to SQL Server Reporting Services: Sql Server Ssrs 2008 R2
Basics & Intro to SQL Server Reporting Services: Sql Server Ssrs 2008 R2Basics & Intro to SQL Server Reporting Services: Sql Server Ssrs 2008 R2
Basics & Intro to SQL Server Reporting Services: Sql Server Ssrs 2008 R2
Bala Subra
 
SAP HANA Data integration using Informatica
SAP HANA Data integration using InformaticaSAP HANA Data integration using Informatica
SAP HANA Data integration using InformaticaOracle
 
Reports with SQL Server Reporting Services
Reports with SQL Server Reporting ServicesReports with SQL Server Reporting Services
Reports with SQL Server Reporting Services
Peter Gfader
 
Informatica slides
Informatica slidesInformatica slides
Informatica slides
sureshpaladi12
 
Ssrs introduction session 1
Ssrs introduction session 1Ssrs introduction session 1
Ssrs introduction session 1
Muthuvel P
 
BI Reporting Application Comparison
BI Reporting Application ComparisonBI Reporting Application Comparison
BI Reporting Application Comparison
Scott Mitchell
 

What's hot (20)

ERP Data Migration Methodologies
ERP Data Migration MethodologiesERP Data Migration Methodologies
ERP Data Migration Methodologies
 
Big Data and BI Tools - BI Reporting for Bay Area Startups User Group
Big Data and BI Tools - BI Reporting for Bay Area Startups User GroupBig Data and BI Tools - BI Reporting for Bay Area Startups User Group
Big Data and BI Tools - BI Reporting for Bay Area Startups User Group
 
MSBI-SQL Server Reporting Services
MSBI-SQL Server Reporting ServicesMSBI-SQL Server Reporting Services
MSBI-SQL Server Reporting Services
 
SAP BW vs Teradat; A White Paper
SAP BW vs Teradat; A White PaperSAP BW vs Teradat; A White Paper
SAP BW vs Teradat; A White Paper
 
SAP HANA Integrated with Microstrategy
SAP HANA Integrated with MicrostrategySAP HANA Integrated with Microstrategy
SAP HANA Integrated with Microstrategy
 
Data flow in Extraction of ETL data warehousing
Data flow in Extraction of ETL data warehousingData flow in Extraction of ETL data warehousing
Data flow in Extraction of ETL data warehousing
 
Sql business intelligence
Sql business intelligenceSql business intelligence
Sql business intelligence
 
prime_bi_brochure
prime_bi_brochureprime_bi_brochure
prime_bi_brochure
 
Presentation 1 - SSRS (1)
Presentation 1 - SSRS (1)Presentation 1 - SSRS (1)
Presentation 1 - SSRS (1)
 
Database migration
Database migrationDatabase migration
Database migration
 
Unified Enterprise Data Mapping, Governance & Automation Platform
Unified Enterprise Data Mapping, Governance & Automation PlatformUnified Enterprise Data Mapping, Governance & Automation Platform
Unified Enterprise Data Mapping, Governance & Automation Platform
 
Kingshir-KADMS features
Kingshir-KADMS featuresKingshir-KADMS features
Kingshir-KADMS features
 
SSRS 2008 R2
SSRS 2008 R2SSRS 2008 R2
SSRS 2008 R2
 
Whats New Sql Server 2008 R2
Whats New Sql Server 2008 R2Whats New Sql Server 2008 R2
Whats New Sql Server 2008 R2
 
Basics & Intro to SQL Server Reporting Services: Sql Server Ssrs 2008 R2
Basics & Intro to SQL Server Reporting Services: Sql Server Ssrs 2008 R2Basics & Intro to SQL Server Reporting Services: Sql Server Ssrs 2008 R2
Basics & Intro to SQL Server Reporting Services: Sql Server Ssrs 2008 R2
 
SAP HANA Data integration using Informatica
SAP HANA Data integration using InformaticaSAP HANA Data integration using Informatica
SAP HANA Data integration using Informatica
 
Reports with SQL Server Reporting Services
Reports with SQL Server Reporting ServicesReports with SQL Server Reporting Services
Reports with SQL Server Reporting Services
 
Informatica slides
Informatica slidesInformatica slides
Informatica slides
 
Ssrs introduction session 1
Ssrs introduction session 1Ssrs introduction session 1
Ssrs introduction session 1
 
BI Reporting Application Comparison
BI Reporting Application ComparisonBI Reporting Application Comparison
BI Reporting Application Comparison
 

Similar to SSRS RLS Prototype | Vision and Scope Document

DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)
Gerardo Pardo-Castellote
 
Increased IT infrastructure effectiveness by 80% with Microsoft system center...
Increased IT infrastructure effectiveness by 80% with Microsoft system center...Increased IT infrastructure effectiveness by 80% with Microsoft system center...
Increased IT infrastructure effectiveness by 80% with Microsoft system center...
Aspire Systems
 
Salesforce Multitenant Architecture: How We Do the Magic We Do
Salesforce Multitenant Architecture: How We Do the Magic We DoSalesforce Multitenant Architecture: How We Do the Magic We Do
Salesforce Multitenant Architecture: How We Do the Magic We Do
Salesforce Developers
 
0.3 aim phases_and_documentations
0.3 aim phases_and_documentations0.3 aim phases_and_documentations
0.3 aim phases_and_documentations
Oracle HRMS Functional Consultant
 
BI Environment Technical Analysis
BI Environment Technical AnalysisBI Environment Technical Analysis
BI Environment Technical Analysis
Ryan Casey
 
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the CloudFSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
Amazon Web Services
 
CMGT410 v19Business Requirements TemplateCMGT410 v19Page 2.docx
CMGT410 v19Business Requirements TemplateCMGT410 v19Page 2.docxCMGT410 v19Business Requirements TemplateCMGT410 v19Page 2.docx
CMGT410 v19Business Requirements TemplateCMGT410 v19Page 2.docx
mary772
 
Understanding the Salesforce Architecture: How We Do the Magic We Do
Understanding the Salesforce Architecture: How We Do the Magic We DoUnderstanding the Salesforce Architecture: How We Do the Magic We Do
Understanding the Salesforce Architecture: How We Do the Magic We Do
Salesforce Developers
 
Database Engine Control though Web Portal Monitoring Configuration
Database Engine Control though Web Portal Monitoring ConfigurationDatabase Engine Control though Web Portal Monitoring Configuration
Database Engine Control though Web Portal Monitoring Configuration
IRJET Journal
 
SNIA white paper-sw defined storage
SNIA white paper-sw defined storageSNIA white paper-sw defined storage
SNIA white paper-sw defined storage
lingathoti
 
Cloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from MicrosoftCloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from Microsoft
Kesavan Munuswamy
 
Presentation application change management and data masking strategies for ...
Presentation   application change management and data masking strategies for ...Presentation   application change management and data masking strategies for ...
Presentation application change management and data masking strategies for ...
xKinAnx
 
S299137 Enterprise Saa S Behind The Operational Scenes Of Oracle Crm On Demand
S299137 Enterprise Saa S Behind The Operational Scenes Of Oracle Crm On DemandS299137 Enterprise Saa S Behind The Operational Scenes Of Oracle Crm On Demand
S299137 Enterprise Saa S Behind The Operational Scenes Of Oracle Crm On DemandKate Haughton
 
Basic-Project-Estimation-1999
Basic-Project-Estimation-1999Basic-Project-Estimation-1999
Basic-Project-Estimation-1999Michael Wigley
 
M.S. Dissertation in Salesforce on Force.com
M.S. Dissertation in Salesforce on Force.comM.S. Dissertation in Salesforce on Force.com
M.S. Dissertation in Salesforce on Force.com
Arun Somu Panneerselvam
 
Pysyvästi laadukasta masterdataa SmartMDM:n avulla
Pysyvästi laadukasta masterdataa SmartMDM:n avullaPysyvästi laadukasta masterdataa SmartMDM:n avulla
Pysyvästi laadukasta masterdataa SmartMDM:n avulla
Bilot
 

Similar to SSRS RLS Prototype | Vision and Scope Document (20)

Ssn#14 reporting services part ii
Ssn#14  reporting services part iiSsn#14  reporting services part ii
Ssn#14 reporting services part ii
 
DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)
 
Increased IT infrastructure effectiveness by 80% with Microsoft system center...
Increased IT infrastructure effectiveness by 80% with Microsoft system center...Increased IT infrastructure effectiveness by 80% with Microsoft system center...
Increased IT infrastructure effectiveness by 80% with Microsoft system center...
 
Salesforce Multitenant Architecture: How We Do the Magic We Do
Salesforce Multitenant Architecture: How We Do the Magic We DoSalesforce Multitenant Architecture: How We Do the Magic We Do
Salesforce Multitenant Architecture: How We Do the Magic We Do
 
SaaSRefArch
SaaSRefArchSaaSRefArch
SaaSRefArch
 
0.3 aim phases_and_documentations
0.3 aim phases_and_documentations0.3 aim phases_and_documentations
0.3 aim phases_and_documentations
 
BI Environment Technical Analysis
BI Environment Technical AnalysisBI Environment Technical Analysis
BI Environment Technical Analysis
 
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the CloudFSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
 
Ravi_Narala_Resume
Ravi_Narala_ResumeRavi_Narala_Resume
Ravi_Narala_Resume
 
CMGT410 v19Business Requirements TemplateCMGT410 v19Page 2.docx
CMGT410 v19Business Requirements TemplateCMGT410 v19Page 2.docxCMGT410 v19Business Requirements TemplateCMGT410 v19Page 2.docx
CMGT410 v19Business Requirements TemplateCMGT410 v19Page 2.docx
 
Understanding the Salesforce Architecture: How We Do the Magic We Do
Understanding the Salesforce Architecture: How We Do the Magic We DoUnderstanding the Salesforce Architecture: How We Do the Magic We Do
Understanding the Salesforce Architecture: How We Do the Magic We Do
 
Database Engine Control though Web Portal Monitoring Configuration
Database Engine Control though Web Portal Monitoring ConfigurationDatabase Engine Control though Web Portal Monitoring Configuration
Database Engine Control though Web Portal Monitoring Configuration
 
SNIA white paper-sw defined storage
SNIA white paper-sw defined storageSNIA white paper-sw defined storage
SNIA white paper-sw defined storage
 
Cloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from MicrosoftCloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from Microsoft
 
Presentation application change management and data masking strategies for ...
Presentation   application change management and data masking strategies for ...Presentation   application change management and data masking strategies for ...
Presentation application change management and data masking strategies for ...
 
S299137 Enterprise Saa S Behind The Operational Scenes Of Oracle Crm On Demand
S299137 Enterprise Saa S Behind The Operational Scenes Of Oracle Crm On DemandS299137 Enterprise Saa S Behind The Operational Scenes Of Oracle Crm On Demand
S299137 Enterprise Saa S Behind The Operational Scenes Of Oracle Crm On Demand
 
Basic-Project-Estimation-1999
Basic-Project-Estimation-1999Basic-Project-Estimation-1999
Basic-Project-Estimation-1999
 
Resume_Krishna.M
Resume_Krishna.MResume_Krishna.M
Resume_Krishna.M
 
M.S. Dissertation in Salesforce on Force.com
M.S. Dissertation in Salesforce on Force.comM.S. Dissertation in Salesforce on Force.com
M.S. Dissertation in Salesforce on Force.com
 
Pysyvästi laadukasta masterdataa SmartMDM:n avulla
Pysyvästi laadukasta masterdataa SmartMDM:n avullaPysyvästi laadukasta masterdataa SmartMDM:n avulla
Pysyvästi laadukasta masterdataa SmartMDM:n avulla
 

Recently uploaded

一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单
ewymefz
 
My burning issue is homelessness K.C.M.O.
My burning issue is homelessness K.C.M.O.My burning issue is homelessness K.C.M.O.
My burning issue is homelessness K.C.M.O.
rwarrenll
 
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
mbawufebxi
 
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
John Andrews
 
Influence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business PlanInfluence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business Plan
jerlynmaetalle
 
Levelwise PageRank with Loop-Based Dead End Handling Strategy : SHORT REPORT ...
Levelwise PageRank with Loop-Based Dead End Handling Strategy : SHORT REPORT ...Levelwise PageRank with Loop-Based Dead End Handling Strategy : SHORT REPORT ...
Levelwise PageRank with Loop-Based Dead End Handling Strategy : SHORT REPORT ...
Subhajit Sahu
 
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdfCriminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP
 
一比一原版(RUG毕业证)格罗宁根大学毕业证成绩单
一比一原版(RUG毕业证)格罗宁根大学毕业证成绩单一比一原版(RUG毕业证)格罗宁根大学毕业证成绩单
一比一原版(RUG毕业证)格罗宁根大学毕业证成绩单
vcaxypu
 
Data Centers - Striving Within A Narrow Range - Research Report - MCG - May 2...
Data Centers - Striving Within A Narrow Range - Research Report - MCG - May 2...Data Centers - Striving Within A Narrow Range - Research Report - MCG - May 2...
Data Centers - Striving Within A Narrow Range - Research Report - MCG - May 2...
pchutichetpong
 
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
dwreak4tg
 
一比一原版(QU毕业证)皇后大学毕业证成绩单
一比一原版(QU毕业证)皇后大学毕业证成绩单一比一原版(QU毕业证)皇后大学毕业证成绩单
一比一原版(QU毕业证)皇后大学毕业证成绩单
enxupq
 
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
g4dpvqap0
 
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
Timothy Spann
 
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
slg6lamcq
 
Machine learning and optimization techniques for electrical drives.pptx
Machine learning and optimization techniques for electrical drives.pptxMachine learning and optimization techniques for electrical drives.pptx
Machine learning and optimization techniques for electrical drives.pptx
balafet
 
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
ewymefz
 
Data_and_Analytics_Essentials_Architect_an_Analytics_Platform.pptx
Data_and_Analytics_Essentials_Architect_an_Analytics_Platform.pptxData_and_Analytics_Essentials_Architect_an_Analytics_Platform.pptx
Data_and_Analytics_Essentials_Architect_an_Analytics_Platform.pptx
AnirbanRoy608946
 
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
2023240532
 
Predicting Product Ad Campaign Performance: A Data Analysis Project Presentation
Predicting Product Ad Campaign Performance: A Data Analysis Project PresentationPredicting Product Ad Campaign Performance: A Data Analysis Project Presentation
Predicting Product Ad Campaign Performance: A Data Analysis Project Presentation
Boston Institute of Analytics
 
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
u86oixdj
 

Recently uploaded (20)

一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单
 
My burning issue is homelessness K.C.M.O.
My burning issue is homelessness K.C.M.O.My burning issue is homelessness K.C.M.O.
My burning issue is homelessness K.C.M.O.
 
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
 
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
 
Influence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business PlanInfluence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business Plan
 
Levelwise PageRank with Loop-Based Dead End Handling Strategy : SHORT REPORT ...
Levelwise PageRank with Loop-Based Dead End Handling Strategy : SHORT REPORT ...Levelwise PageRank with Loop-Based Dead End Handling Strategy : SHORT REPORT ...
Levelwise PageRank with Loop-Based Dead End Handling Strategy : SHORT REPORT ...
 
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdfCriminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdf
 
一比一原版(RUG毕业证)格罗宁根大学毕业证成绩单
一比一原版(RUG毕业证)格罗宁根大学毕业证成绩单一比一原版(RUG毕业证)格罗宁根大学毕业证成绩单
一比一原版(RUG毕业证)格罗宁根大学毕业证成绩单
 
Data Centers - Striving Within A Narrow Range - Research Report - MCG - May 2...
Data Centers - Striving Within A Narrow Range - Research Report - MCG - May 2...Data Centers - Striving Within A Narrow Range - Research Report - MCG - May 2...
Data Centers - Striving Within A Narrow Range - Research Report - MCG - May 2...
 
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
 
一比一原版(QU毕业证)皇后大学毕业证成绩单
一比一原版(QU毕业证)皇后大学毕业证成绩单一比一原版(QU毕业证)皇后大学毕业证成绩单
一比一原版(QU毕业证)皇后大学毕业证成绩单
 
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
 
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
 
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
 
Machine learning and optimization techniques for electrical drives.pptx
Machine learning and optimization techniques for electrical drives.pptxMachine learning and optimization techniques for electrical drives.pptx
Machine learning and optimization techniques for electrical drives.pptx
 
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
 
Data_and_Analytics_Essentials_Architect_an_Analytics_Platform.pptx
Data_and_Analytics_Essentials_Architect_an_Analytics_Platform.pptxData_and_Analytics_Essentials_Architect_an_Analytics_Platform.pptx
Data_and_Analytics_Essentials_Architect_an_Analytics_Platform.pptx
 
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
 
Predicting Product Ad Campaign Performance: A Data Analysis Project Presentation
Predicting Product Ad Campaign Performance: A Data Analysis Project PresentationPredicting Product Ad Campaign Performance: A Data Analysis Project Presentation
Predicting Product Ad Campaign Performance: A Data Analysis Project Presentation
 
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
 

SSRS RLS Prototype | Vision and Scope Document

  • 1. Vision and Scope Document | SSRS Prototype Row Level Security (RLS) Version 1.0
  • 2. Vision and Scope Document | SSRS Prototype, Row Level Security (RLS) © AIM Business Driven Data Solutions, 2019 Page 2 of 9 Vision Pam Lehmann and Brian Leslie have identified a need to provide Row Level Security (RLS) a Microsoft Application (SQL Server Reporting Services [SSRS]) to service new and existing Sales, Finance, and Operations reports. The source for these reports originate from TricorBraun’s ERP system Microsoft Dynamics 365. There are two Dynamics 365 applications that are currently being considered as sources for this initiative. These Dynamics 365 applications are Sales (CRM) and Finance and Operations. Below are the identified Executive Leadership and Stakeholders from TricorBraun: • Jeff Douglas, VP Sales Effectiveness • Bill Stultz, VP of Finance for System’s Controller, Finance (Executive Champion) • Dave Duxbury, VP of Operations, GSC – Logistics (Executive Champion) • Doug Bolen, Chief Information Officer • Pam Lehmann, Director, Applications, IT • Brain Leslie, Senior Reporting Analyst, IT • Donovan Foster, IT Consultant, PMO, IT • Sarah Thomason, Project Manager • Mike Lang, Consultant - RSM Due to the complexity of this initiative, it has been decided to complete a SSRS RLS Prototype before we complete the final, expanded Vision Scope Document and the final Design Document. This Vision Scope Document is of limited scope just for the prototype. As the team at TricorBraun identify and finalize the expanded scope, we will document and append to an Expanded Vision Scope Document intended for the final design and development, not the prototype. For the SSRS RLS prototype, we will be using the Daily Gross Profit Report. This SSRS report uses 1 main stored procedure and a few stored procedures to support report parameters. RLS will need to be applied to the main stored procedure as well as the stored procedures to support report parameters. The deliverable and timeline for the SSRS RLS prototype depends heavily on how the stored procedures are built and how they query the Division, Region, and Customer dimensions. This process will be different for each stored procedure for every SSRS report. In extreme conditions, the stored procedures may need to be totally recreated to apply where clause filters early in the stored procedure, or to apply more complex where clause filters using a case statement. SSRS is not Role based security so an entitlement table will need to be created. The stored procedure logic (in all SPs) will need to be able to determine from the entitlement table where to apply the where clause it the code. It is possible that a case statement can be used to change the where clause based on what is stored in the entitlement table so that during different cases, the where clause will filter the Division table, and in another case the where clause will filter the region table. However, only one (1) table can be used to filter (Division, Region, or Customer). Understanding how this will work and the impact on the star schema is a major reason for prototyping the SSRS RLS scenario. Complexities in this SSRS prototype may extend the projected timelines. Approach The SSRS RLS prototype will require the entitlement table be populated with AD Usernames and one (1) table to filter either Division, Region, or Customer. This table will also need all of the divisions, regions, or customers a user can see. SQL Server Reporting Services (SSRS) 2017 and Visual Studio 2017 will be used to develop the RLS prototype for SSRS. The SSRS prototype will use an entitlement table and modified stored procedures where the user's place in the
  • 3. Vision and Scope Document | SSRS Prototype, Row Level Security (RLS) © AIM Business Driven Data Solutions, 2019 Page 3 of 9 organization are used to determine which divisions, regions, and customers a user can access. The prototype will use an entitlement table to apply RLS to the user's place in the organization for only one (1) of the following: divisions, regions, or customers for any given user. Our goal for these prototypes is to apply RLS to the most common security scenario, not the exceptions. We have agreed to the idea that the prototypes should target the 80/20 business rule. Deliverables SSRS RLS has one (1) deliverable: • Development RLS Prototype for SSRS Start Date: 3/28/2019 End Date: 4/18/2019 o Multiple personas plus Business User Personas (no AD Groups) o A complex security model using division, region, and customer tables (to apply RLS), an entitlement table, and a User (contains User Login ID) table. o Apply RLS to 1 Identified SSRS Report and add Predicate Functions, Security Predicates / Policies, and DB Roles o Uses production data for one (1) business defined test SSRS report, stored procedure and parameters o Manual process to load the security entitlement table and the security User table with test data (minimal rows) o 1 Entitlement table to store all Division, Region, and Customer security details as well as the AD User Name Clarifications These are the clarification for the RLS project: • The SSRS prototype and development for RLS will use 1 identified SSRS Report and one (1) related Stored Procedure • The business and IT teams will develop and maintain the one (1) identified SSRS report and one (1) related stored procedure • The business and IT teams will develop and maintain the one (1) Entitlement table and ETL for this entitlement table • The business and IT teams will develop and maintain one (1) security User table and ETL for this User table • SSRS is not a modeling tool, so AD Group Names are not Usable with Security tables (only AD User Names) • The business and IT teams will develop and maintain one (1) Invoice Star Schema and ETL for that Star Schema • Effort estimates are based on 100% resource utilization. Sprints with less than 100% resource utilization, unplanned maintenance, or non-concurrent development blocks of time may result in increased timelines and end dates. How to get the Job Done We will be using the following processes and tools to complete this project and deliverables: • Azure DevOps (VSTS) • Team Foundation Services, or Git (TBD), since both are used at TricorBraun for Source Control and Change Management • We are limiting the work-in-progress by using properly planned deliverables • PBIs, Tasks, and Kanban Boards will be used as part of Azure DevOps (VSTS) o Product backlog o Tasks o Weekly PowerPoint Updates o Sprints are not used at TricorBraun • A scope change log for this document will be used to manage change in an Agile fashion o Name o Description (Impact) o Version o Requested By o Approved By o Date
  • 4. Vision and Scope Document | SSRS Prototype, Row Level Security (RLS) © AIM Business Driven Data Solutions, 2019 Page 4 of 9 Change Log Name Description (Impact) Version Requested By Approved By Date
  • 5. Vision and Scope Document | SSRS Prototype, Row Level Security (RLS) © AIM Business Driven Data Solutions, 2019 Page 5 of 9 Appendix A | SSRS, RLS Security Tables The RLS prototype and development use a complex security model using division, region, and customer tables (dimensions to apply RLS), an entitlement table, and User (contains AD User Name) table. Entitlement Table ADUserName TotalCompany DivisonSecurityID RegionSecurityID AccountNum tricorbraunryan.casey - - Reg_TX - tricorbraunbleslie Yes - - - tricorbraunplehmann Yes - - - tricorbraunsthomason - Div_SW - - tricorbraunklahiri - - Reg_TX - tricorbraunszhang - - - 105288 tricorbraunpkurra - Div_SW - - tricorbraunrkitsch - - - 105305 … Additional Users … … … … Many to 1 User Table ADUserName tricorbraunryan.casey tricorbraunbleslie tricorbraunplehmann tricorbraunsthomason tricorbraunklahiri tricorbraunszhang tricorbraunpkurra tricorbraunrkitsch … Additional Users
  • 6. Vision and Scope Document | SSRS Prototype, Row Level Security (RLS) © AIM Business Driven Data Solutions, 2019 Page 6 of 9 Appendix B | SSRS Security Flow Diagram SSRS Report Row Level Security | SSRS Security Flow Diagram Parameter Stored Procedures Get @SecurityType from Entitlement Table (Division, Region, Customer) Where Clause Predicate Select * from FinalResultsSet F LEFT JOIN EntitlementTable E1 ON F.DivisonID = E1.DivisonID LEFT JOIN EntitlementTable E2 ON F.RegionID = E2.RegionID LEFT JOIN EntitlementTable E3 ON F.AccountNum = E3.AccountNum WHERE CASE WHEN @SecurityType = 'Division' THEN F.DivisionID IN E1.DivisionID WHEN @SecurityType = 'Region' THEN F.RegionID IN E2.RegionID WHEN @SecurityType = 'Customer' THEN F.AccountNum IN E3.AccountNum ELSE 1 END IN COALESE(E1.DivisionID, E2.RegionID, E3.AccountNum, 1) Parameter Stored Procedures Get @SecurityType from Entitlement Table (Division, Region, Customer) Where Clause Predicate Select * from FinalResultsSet F LEFT JOIN EntitlementTable E1 ON F.DivisonID = E1.DivisonID LEFT JOIN EntitlementTable E2 ON F.RegionID = E2.RegionID LEFT JOIN EntitlementTable E3 ON F.AccountNum = E3.AccountNum WHERE CASE WHEN @SecurityType = 'Division' THEN F.DivisionID IN E1.DivisionID WHEN @SecurityType = 'Region' THEN F.RegionID IN E2.RegionID WHEN @SecurityType = 'Customer' THEN F.AccountNum IN E3.AccountNum ELSE 1 END IN COALESE(E1.DivisionID, E2.RegionID, E3.AccountNum, 1) Main Stored Procedure Where Clause Predicate Select * from FinalResultsSet F LEFT JOIN EntitlementTable E1 ON F.DivisonID = E1.DivisonID LEFT JOIN EntitlementTable E2 ON F.RegionID = E2.RegionID LEFT JOIN EntitlementTable E3 ON F.AccountNum = E3.AccountNum WHERE CASE WHEN @SecurityType = 'Division' THEN F.DivisionID IN E1.DivisionID WHEN @SecurityType = 'Region' THEN F.RegionID IN E2.RegionID WHEN @SecurityType = 'Customer' THEN F.AccountNum IN E3.AccountNum ELSE 1=1 END Get @SecurityType from Entitlement Table (Division, Region, Customer) Main Stored Procedure Where Clause Predicate Select * from FinalResultsSet F LEFT JOIN EntitlementTable E1 ON F.DivisonID = E1.DivisonID LEFT JOIN EntitlementTable E2 ON F.RegionID = E2.RegionID LEFT JOIN EntitlementTable E3 ON F.AccountNum = E3.AccountNum WHERE CASE WHEN @SecurityType = 'Division' THEN F.DivisionID IN E1.DivisionID WHEN @SecurityType = 'Region' THEN F.RegionID IN E2.RegionID WHEN @SecurityType = 'Customer' THEN F.AccountNum IN E3.AccountNum ELSE 1=1 END Get @SecurityType from Entitlement Table (Division, Region, Customer) ** The case statement in the Where clause needs to be proved to work. If the example to the left won t work, we will have to Create a Comma Separated String when we Get The Security Type. Where Clause Predicate Select * from FinalResultsSet F WHERE CASE WHEN @SecurityType = 'Division' THEN F.DivisionID WHEN @SecurityType = 'Region' THEN F.RegionID WHEN @SecurityType = 'Customer' THEN F.AccountNum ELSE 1 END IN @CommaSeperatedString Get @SecurityType and @CommaSeperated String SSRS Report Row Level Security | SSRS Security Flow Diagram Parameter Stored Procedures Get @SecurityType from Entitlement Table (Division, Region, Customer) Where Clause Predicate Select * from FinalResultsSet F LEFT JOIN EntitlementTable E1 ON F.DivisonID = E1.DivisonID LEFT JOIN EntitlementTable E2 ON F.RegionID = E2.RegionID LEFT JOIN EntitlementTable E3 ON F.AccountNum = E3.AccountNum WHERE CASE WHEN @SecurityType = 'Division' THEN F.DivisionID IN E1.DivisionID WHEN @SecurityType = 'Region' THEN F.RegionID IN E2.RegionID WHEN @SecurityType = 'Customer' THEN F.AccountNum IN E3.AccountNum ELSE 1 END IN COALESE(E1.DivisionID, E2.RegionID, E3.AccountNum, 1) Main Stored Procedure Where Clause Predicate Select * from FinalResultsSet F LEFT JOIN EntitlementTable E1 ON F.DivisonID = E1.DivisonID LEFT JOIN EntitlementTable E2 ON F.RegionID = E2.RegionID LEFT JOIN EntitlementTable E3 ON F.AccountNum = E3.AccountNum WHERE CASE WHEN @SecurityType = 'Division' THEN F.DivisionID IN E1.DivisionID WHEN @SecurityType = 'Region' THEN F.RegionID IN E2.RegionID WHEN @SecurityType = 'Customer' THEN F.AccountNum IN E3.AccountNum ELSE 1=1 END Get @SecurityType from Entitlement Table (Division, Region, Customer) ** The case statement in the Where clause needs to be proved to work. If the example to the left won t work, we will have to Create a Comma Separated String when we Get The Security Type. Where Clause Predicate Select * from FinalResultsSet F WHERE CASE WHEN @SecurityType = 'Division' THEN F.DivisionID WHEN @SecurityType = 'Region' THEN F.RegionID WHEN @SecurityType = 'Customer' THEN F.AccountNum ELSE 1 END IN @CommaSeperatedString Get @SecurityType and @CommaSeperated String
  • 7. Vision and Scope Document | SSRS Prototype, Row Level Security (RLS) © AIM Business Driven Data Solutions, 2019 Page 7 of 9 Appendix C | Security Division ID -- [Invoicing].[dbo].[DimDivision] with SecurityDivisionID SELECT TOP (1000) [DivisionKey] ,[DivisionId] ,CASE WHEN [DivisionId] = 'Central' THEN 'Central' WHEN [DivisionId] = 'Div_CCE' THEN 'Div_CCE' WHEN [DivisionId] = 'Div_Intl' THEN 'Div_Intl' WHEN [DivisionId] = 'Div_MNA' THEN 'Div_MNA' WHEN [DivisionId] = 'Div_NE' THEN 'Div_NE' WHEN [DivisionId] = 'Div_NW' THEN 'Div_NW' WHEN [DivisionId] = 'Div_Other' THEN 'Div_Other' WHEN [DivisionId] = 'Div_PkgAll' THEN 'Div_PkgAll' WHEN [DivisionId] = 'Div_PNW' THEN 'Div_PNW' WHEN [DivisionId] = 'Div_SE' THEN 'Div_SE' WHEN [DivisionId] = 'Div_SW' THEN 'Div_SW' WHEN [DivisionId] = 'Div_Taipak' THEN 'Div_Taipak' WHEN [DivisionId] = 'Div_WP' THEN 'Div_WP' WHEN [DivisionId] = 'International' THEN 'International' WHEN [DivisionId] = 'Midwest' THEN 'Midwest' WHEN [DivisionId] = 'MNA_Div' THEN 'MNA_Div' WHEN [DivisionId] = 'Other' THEN 'Other' WHEN [DivisionId] = 'PNW_Div' THEN 'PNW_Div' WHEN [DivisionId] = 'Taipak_Div' THEN 'Taipak_Div' WHEN [DivisionId] = 'Unknown' THEN 'Unknown' WHEN [DivisionId] = 'West' THEN 'West' WHEN [DivisionId] = 'Wine' THEN 'Wine' END [SecurityDivisionID] ,[DivisionDescription] ,[CreatedDate] ,[CreatedBy] ,[UpdatedDate] ,[UpdatedBy] ,[SortOrder] ,[IsActive] FROM [Invoicing].[dbo].[DimDivision] ORDER BY [DivisionId]
  • 8. Vision and Scope Document | SSRS Prototype, Row Level Security (RLS) © AIM Business Driven Data Solutions, 2019 Page 8 of 9 Appendix D | Security Region ID -- [Invoicing].[dbo].[DimRegion] with SecurityRegionID-- SELECT TOP (1000) [RegionKey] ,[RegionId] ,CASE WHEN [RegionId] = 'Acedo' THEN 'Acedo' WHEN [RegionId] = 'Binkowski' THEN 'Binkowski' WHEN [RegionId] = 'Borras' THEN 'Borras' WHEN [RegionId] = 'Bottene' THEN 'Bottene' WHEN [RegionId] = 'Briggs' THEN 'Briggs' WHEN [RegionId] = 'Caldwell' THEN 'Caldwell' WHEN [RegionId] = 'Canada' THEN 'Canada' WHEN [RegionId] = 'Danheiser' THEN 'Danheiser' WHEN [RegionId] = 'Davis' THEN 'Davis' WHEN [RegionId] = 'DuClos' THEN 'DuClos' WHEN [RegionId] = 'Europe' THEN 'Europe' WHEN [RegionId] = 'Forbes' THEN 'Forbes' WHEN [RegionId] = 'Gibbs' THEN 'Gibbs' WHEN [RegionId] = 'Kliska' THEN 'Kliska' WHEN [RegionId] = 'Logue' THEN 'Logue' WHEN [RegionId] = 'Mexico' THEN 'Mexico' WHEN [RegionId] = 'MidAtlantic' THEN 'MidAtlantic' WHEN [RegionId] = 'MidMountain' THEN 'MidMountain' WHEN [RegionId] = 'MidSouth' THEN 'MidSouth' WHEN [RegionId] = 'Midwest' THEN 'Midwest' WHEN [RegionId] = 'Muster' THEN 'Muster' WHEN [RegionId] = 'Northeast' THEN 'Northeast' WHEN [RegionId] = 'Northwest' THEN 'Northwest' WHEN [RegionId] = 'Other' THEN 'Other' WHEN [RegionId] = 'OtherRegion' THEN 'OtherRegion' WHEN [RegionId] = 'PkgDesign' THEN 'PkgDesign' WHEN [RegionId] = 'POD' THEN 'POD' WHEN [RegionId] = 'PODRegion' THEN 'PODRegion' WHEN [RegionId] = 'SalesInit' THEN 'SalesInit' WHEN [RegionId] = 'Simpson' THEN 'Simpson' WHEN [RegionId] = 'Small' THEN 'Small' WHEN [RegionId] = 'Southeast' THEN 'Southeast' WHEN [RegionId] = 'Southwest' THEN 'Southwest' WHEN [RegionId] = 'Taylor' THEN 'Taylor' WHEN [RegionId] = 'Texas' THEN 'Texas' WHEN [RegionId] = 'Unknown' THEN 'Unknown' WHEN [RegionId] = 'WinePak' THEN 'WinePak' WHEN [RegionId] = 'Taipak_Reg' THEN 'Taipak_Reg' WHEN [RegionId] = 'MNA_Reg' THEN 'MNA_Reg' WHEN [RegionId] = 'PNW_Reg' THEN 'PNW_Reg' WHEN [RegionId] = 'San_Fran_Reg' THEN 'San_Fran_Reg' WHEN [RegionId] = 'Reg_CE' THEN 'Reg_CE' WHEN [RegionId] = 'Reg_EU' THEN 'Reg_EU' WHEN [RegionId] = 'Reg_MME' THEN 'Reg_MME' WHEN [RegionId] = 'Reg_MNA' THEN 'Reg_MNA' WHEN [RegionId] = 'Reg_MS' THEN 'Reg_MS' WHEN [RegionId] = 'Reg_MW' THEN 'Reg_MW' WHEN [RegionId] = 'Reg_NE' THEN 'Reg_NE' WHEN [RegionId] = 'Reg_Other' THEN 'Reg_Other' WHEN [RegionId] = 'Reg_PNW' THEN 'Reg_PNW' WHEN [RegionId] = 'Reg_POD' THEN 'Reg_POD' WHEN [RegionId] = 'Reg_SE' THEN 'Reg_SE' WHEN [RegionId] = 'Reg_SF' THEN 'Reg_SF' WHEN [RegionId] = 'Reg_SW' THEN 'Reg_SW' WHEN [RegionId] = 'Reg_Taipak' THEN 'Reg_Taipak' WHEN [RegionId] = 'Reg_TX' THEN 'Reg_TX' WHEN [RegionId] = 'Reg_CW' THEN 'Reg_CW' WHEN [RegionId] = 'Reg_MX' THEN 'Reg_MX' WHEN [RegionId] = 'Reg_WP' THEN 'Reg_WP' WHEN [RegionId] = 'Reg_PkgAll' THEN 'Reg_PkgAll' END [SecurityRegionID] ,[RegionDescription],[CreatedDate],[CreatedBy],[UpdatedDate],[UpdatedBy],[IsActive] FROM [Invoicing].[dbo].[DimRegion]
  • 9. Vision and Scope Document | SSRS Prototype, Row Level Security (RLS) © AIM Business Driven Data Solutions, 2019 Page 9 of 9