This document summarizes Willie Liao's presentation on how Jobvite customized OpenText Analytics for their SaaS reporting needs. It describes how Jobvite migrated from a homegrown .NET solution to using OpenText Actuate to build interactive reports on their Redshift data warehouse. It discusses challenges around data isolation, report isolation, and SaaS authentication, and how Jobvite solved them through custom SQL, event handlers, custom list pages, and integrating Actuate with their authentication services. Next steps included migrating to the latest iHub platform and enabling self-service reporting.
1. ANA-305 | OPENTEXT ENTERPRISE WORLD 16’
Customizing OpenText Analytics for SaaS Operation
Willie Liao
Team Lead, Analytics and Big Data
willie.liao@jobvite-inc.com
2. Agenda
| OpenText EW’16
Who is Jobvite
Home-grown reporting solution
OpenText Actuate Analytics Project
Challenges & Solution
Next Steps
3. Who is Jobvite
| OpenText EW’16
• Software as a Service (SaaS) recruiting platform
• ~1600 customers
• ~ 2 Million jobs hosted
• ~ 55 Million application
4. Before OpenText: .NET Reporting
| OpenText EW’16
• Home-grown reporting solution built in .NET
• Query transactional DB (MSSQL, MySQL, Mongo) directly
• Not scalable
• AWS hosting cost is high
5. OpenText Analytics Project
| OpenText EW’16
• Project started in 2013
• GA May 2015
• Using Actuate iServer version 11 service pack 4 fix 3
• Run against Redshift data warehouse
• Reporting only solution (Interactive Viewer)
8. Challenge: Data Isolation
| OpenText EW’16
• All Customers data is in a single table
• Some roles should not have access to certain fields
• Ex. Job
job_id company_id job_title job_sent_date
112345 89 Lead Development Representative 2016-06-16 12:35:01
112346 89 Northeast Enterprise Sales Manager 2016-06-16 12:35:15
112347 153 Front-End Developer II 2016-06-16 12:37:05
112348 4105 iOS Mobile App Lead Engineer 2016-06-16 12:37:07
112349 153 Recruiting Coordinator 2016-06-16 12:37:42
112350 153 Manager, Analytics 2016-06-16 12:37:44
job_bonus
2000
9. Solution: Event Handlers
| OpenText EW’16
• We use custom SQL as Data Set
• SELECT job_id, job_title, job_sent_date, job_bonus FROM job WHERE
company_id = ?
• Event Handlers
1. Check logged-in user’s company_id (e.g. 153)
2. Replace ‘?’ with 153
3. Remove job_bonus as logged in user does not have access to ‘Bonus’ field
10. Challenge: Report Isolation
| OpenText EW’16
• All Customers hitting the same Actuate instance
• All Customers should see a common set of pre-built reports (Library Reports)
• In addition, each user should see:
• Custom Reports she/he created
• Customer Reports other users in the same company shared with her/him
11. Solution: Custom List Page & IDAPI
| OpenText EW’16
• Custom List Page
• “Library” section list all reports in
”/reports” folder on server which everyone
has read access
12. Solution: Custom List Page & IDAPI
| OpenText EW’16
• Custom List Page
• “Library” section list all reports in
”/reports” folder on server which everyone has
read access
• Each company has a separate folder in /Home
and “My Report” section list all reports in
company folder which user has ACL to.
13. Challenge: SaaS authentication
| OpenText EW’16
• Customer authenticate through our DB
• We do not use LDAP for SaaS operation
• Role-based security
14. Solution: Information Delivery API (IDAPI)
& Reporting Server Security Extension (RSSE)
| OpenText EW’16
(JV) REPORTING
SERVICE
ACTUATE ISERVER
(JV)
AUTHENTICATION
SERVICE
RSSE
Client
IDAPI Call – Authenticate()
RSSE Calls
Authenticate()
DoesUserExist()
DoesRoleExist()
getUserProperties()
17. Next Steps
| OpenText EW’16
• Looking forward to migrate to latest Information Hub (iHub)
• Looking forward to have self-service report and dashboard