2. Session Takeaways
What is PersOp? Understand the problems that our Personalization
Operations Console solves
How it works Operational Modes, Server Components and Database
Changes – Deep Dive
See PersOps in action Walk through common pain points and demonstrate
how to resolve
Advanced Configuration and Troubleshooting Learn how to optimise for
your environment and discover expert insights
What is next in the Roadmap See what is planned within the next phase of
Personalization Operations and discuss enhancements with the Product team
3. What is the Problem?
Profile management matters, but what happens when you need to make a
change within your environment?
If IT Persisting the ‘wrong’ settings also leads to poor application performance
and user experience
Rectifying the above issues prior to v10 was only possible at scale via custom
SQL/Powershell scripting
Single most requested enhancement by our existing customers
4. PersOps Overview
Eradicate the need for custom maintenance/clean-up SQL Scripts
Reduce TCO and Service Desk calls
Enable customers to truly manage their Personalization Data at scale
Provide Role based access and auditing
Consolidate the Service desk functionality previously provided within the EM
Browser Interface into a single Web Console
6. Role Based Access
Database operations are allowed based on the roles configured by the Roles
Administration pages of Persops itself
In the event of an accidental lockout (for example a database restore), an
executable is provided to allow a user with dbo access to add appropriate roles
to the database. This executable is RolesAdmin.exe within the support
subdirectory
7. PersOps Single User Mode
Users with the ‘Support Desk’ Role can manage a Single
User's Backups or Current Settings
Perform both "quick" tasks and custom tasks including:
Deleting all backups for a selected App/WSG group
Creating new backups for App/WSG group
Deleting all current settings, registry items, or file and
folder items for App/WSG group
Restoring the latest backup for the selected App/WSG
group, while also backing up the current settings
Custom tasks include actions such as manually selecting
and deleting file and folder items from the users current
settings
For registry keys and values, you can do the following:
Delete a selected registry key and all subkeys
Edit data for a selected registry value. Delete a
selected registry values
All Single User tasks are executed immediately without
using the Bulk Processor
Monitor Profile Migration progress
8. PersOps Multi User Mode
Users with the ‘Administrator/Master Administrator’
role can manage Multi User Backups or Current
Settings
Apply all the functionality of Single User mode to
Multiple Users
Utilises the Action Scheduler to specify when a Job
should be executed
Ability to pause, reschedule or terminate running
operations
Monitor the current Task queue
Monitor Profile Migration progress
9. Server Components
Angular JS
Application
REST API (PWCAPI) Bulk Processor
• Consists of web.config,
index.html and dist folder at
the root of Default Website
• Dist folder contains all the
html, javascript, json and css
etc. files
• Hosted in IIS on port 7771
• Acronym PWC = Persops
Web Console
• Web application executing
on IIS server in /PWCAPI
directory
• Written with Web API 2 and
using Entity Framework to
read the database
• Processes Multi User
Operations
• Leverages the
Background Service
10. Angular JS Application
A Single Page Web Application written in javascript using AngularJS and
Bootstrap frameworks
Requires the IIS URL Rewrite module
web.config configures rewrite rules for site functionality mainly for the api
and personalization server to co-exist with PersOps
Site uses Windows Authentication and cannot be changed
Executes completely at the browser end – all IIS does is serve up the static
content
Communicates with the personalization database via the REST API (PWCAPI)
Scripts are cached by each browser
Debugging can be done at the browser end via F12
11. REST API (PWCAPI)
Acronym PWC = PersOps Web Console
Web application executing on IIS server in /PWCAPI directory
Written with Web API 2 and using Entity Framework to read the database
Communicates directly with the database (not via EMPS)
Database reads are executed directly (unlike EMPS which uses
SPROCS). Database writes use SPROCS
Communicates with Bulk Ops processor (in Background Service) by
adding jobs to job table in database
12. Help page available - use /PWCAPI/Help, e.g. localhost:7771/PWCAPI/Help
Since REST API is documented, no problem for customers to
script against it
Security is enforced by the API, not the front end
Can user powershell’s Invoke_RestMethod cmdlet e.g.
$users = invoke-restmethod
http://localhost:7771/PWCAPI/User
-body @{"search" = "g"} -
UseDefaultCredentials
Above code returns a list of users beginning with “g” to $users
variable
REST API Details
13. Bulk Processor
Bulk tasks are executed one at a time, intentional to avoid concurrency issues
Resuming a paused task will not cause it to immediately execute if the processor is already
working on another job within the queue. The second task must complete before the
processor rescans and picks up the resumed task
There is no guarantee that a task in WaitingForStartTime state will execute when that time
passes - there may be tasks in front of it executing. We only guarantee it won’t start before
the start time
If multiple Background Services are connected to the database, only one performs bulk
processing and others are locked out (Similar approach to EMBI)
The server which ‘grabs’ the Job table first will continue executing until all tasks have
completed
If the server is shut down or fails, another one will take over automatically
Task state is saved in the database so operations do not get executed twice
17. Processing can be disabled by modifying the BulkOps.JobControl single-row table.
The column BulkOpsEnabled can be set to 0 to stop operations.
This is a manual operation and would need to be set back to 1 to resume
Bulk Task state is polled every 5 seconds by the server
This can be altered "C:Program FilesAppSenseEnvironment ManagerPersonalization
Serverdistappconfigconfig.js”
Alter value window.bulkTaskPollFrequency = 5000
Logs to the BackgroundService.log. Switching on logging for EMPS will turn on Background
Service logging also
Using the SCP to switch on logging will switch logging to the ‘Info’ level. It is possible to get more
detailed logging by manually editing BackgroundService.exe.config and setting log level to
“Debug”
Bulk Processor Logging/Configuration
18. There are a number of options in the appSettings section of the BackgroundService.exe.config file
which are relevant to bulk operations. These are:
BulkOpsScanTimeSeconds Frequency that bulkops scans the job table looking for work
BulkOpsScopeExpanderBatchSize Number of user ids retrieved per batch in the scope expander phase of job processing
BulkOpsScopeExpanderBatchDelayMs Delay between scope expander batches, milliseconds
BulkOpsBatchSize Number of users processed per batch
BulkOpsBatchDelayMs Delay between batches, milliseconds
BulkOpsMaxConsecutiveErrors Number of consecutive operational errors that cause the job to be terminated. An operational
error is a sql error (after retries). Failing to find any relevant data for a user is not an operational
error here
BulkOpsMaxUserRetryCount Number of times an operation on a user is retried after a sql error. Set to zero to disable retries
BulkOpsUserRetryDelayMs Delay after a sql error before a retry is attempted. Not relevant if BulkOpMaxUserRetryCount is
set to zero
BulkOpsArchiveCreateTimeoutSecs Timeout specifically for archive create queries. Since creating an archive may cause sql server to
autogrow the database, this timeout is configurable. Timeout for all other sql operations is the
default of 30 seconds
Bulk Processor Logging/Configuration
19. Writes to the PWC.log in default log location
Errors are always logged. Enable via SCP for advanced debugging (activity by
clients)
The REST API has a logging entry point which allows the front end application to
audit errors. Should the front end encounter an error (other than API inaccessible)
it will send an event to the PWC log
Configuration can be changed by modifying appSettings section in web.config file
PWC API has only two configurable options in the web.config appSettings section:
UserSearchListSize Maximum number of entries returned to front end when
searching for users on the start page
ADSearchListSize Maximum number of users and AD groups returned in the
search for the Role Admin function
PWCAPI Logging/Configuration
20. Database Updates
BulkOps.Job tracks any running or pending jobs. When a job has completed or
been cancelled, its entry is removed from the table
BulkOps.JobEntity a list of user ids left to process for each job
BulkOps.JobControl contains current server name and global disable flag
PWC.WebUser list of authorized users of Persops (for Role Admin functions)
PWC.WebUserGroup associated groups for non-Master Administrators
dbo.ActionRecord existing table previously used for EMBI and ESST audits, now
used for Persops and ESST audits
dbo.UserADGroup, dbo.UserUserADGroup tracks user Active Directory group
membership
21. AD Group Search Functionality
V10 clients report their user’s AD Group memberships to the PS which
is stored in the database
This information is used for AD group search in the selection of targets
On an upgraded database there will be no AD information for existing
users, so AD searches will not work initially
As legacy clients are upgraded to V10 and users log in, the AD
information is collected
23. What’s Next?
Move Data at Scale between Application and Windows
Personalization Groups.
Enhanced Auditing and Role Based Access
Personalization Reporting
Ability to preview Single/Multi user tasks prior to execution
Generate detailed reporting to track and monitor Personalization
usage