Chris Malek is a PeopleTools® Technical Consultant with two decades of experience working on PeopleSoft enterprise software projects. He is available for consulting engagements.
About Chris Work with ChrisIntroducing a small but powerful PeopleSoft bolt-on that makes web services very easy. If you have a SQL statement, you can turn that into a web service in PeopleSoft in a few minutes.
In this case study, we will explore how to think about implementing PeopleSoft as a SCIM Service Provider. This is a very high-level overview and is not a step-by-step guide. This is a guide to help you understand the concepts and how to think about implementing SCIM with some emphas on PeopleSoft. There is some information here that will help you understand the concepts and how to think about implementing SCIM.
We will also look at some design choices when implementing them in PeopleSoft. I have experience with OKTA with several clients and will use that as a reference point.
SCIM (System for Cross-domain Identity Management) is a standard for automating the exchange of user identity information between IT systems. SCIM is designed to make managing user identities in cloud-based applications and services “easier.” SCIM is an open standard that is designed to simplify user management in cloud-based applications and services. SCIM is a standard that is defined by the SCIM specification. SCIM is not a product or a service. It is a set of rules and guidelines that determine how user identity information should be exchanged between systems.
That sounds complicated, but at its core, it allows for a “master” system to manage user accounts in cloud applications. In simpler terms, SCIM helps to automate keeping user information consistent across different systems. Imagine it as a universal “translator” for user data, ensuring everyone speaks the same language. This simplifies user management, improves security, and reduces administrative overhead.
The SCIM standard lays out some general rules for how user identity information should be exchanged between systems. This makes it easier for software vendors to support user account automation as it provides a starting point. Otherwise, each vendor would have to create their own custom solution for each system they want to integrate with and they would be drastically different from each other.
The SCIM standard is defined by the Internet Engineering Task Force (IETF) and is based on as few REST APIs.
I think of SCIM as a “framework” to help design and implement user account management. It makes some decisions for you upfront, so you don’t have to reinvent the wheel.
Every company uses various online tools and apps – email, project management, file sharing, etc. Each time a new employee joins, someone has to create an account for them in each app manually. And when someone leaves, those accounts need to be deactivated. That’s a lot of work, right? Additionally, this list of applications is constantly changing.
In most corporate environments, this user account creation and sync is a mix of scripts, manual processes, and SFTP files, web service calls, manual help desk tickets. Every organization has some different process for managing this. It is often a Rube Goldberg machine of scripts and manual processes built over time.
No one is happy with their internal process and there is always room for improvement.
In my experience, SCIM is not widely used, but it is a good standard to know about and understand. SCIM is NOT a panacea nor a magic bullet for all your provisioning needs. It is a tool in the toolbox. Internal system experts still must do work to implement it. SCIM gives some structure to the process and helps to automate some manual work. If the cloud application you are trying to push users into supports SCIM, it can be pretty plug-and-play. However, if the application you are pushing users into does not, you will need to work with a developer in that system to accept SCIM messages and update the target systems.
I have implemented PeopleSoft to act as a SCIM Service Provider and Client. We will dig into some of my experiences and how to think about implementing SCIM in PeopleSoft.
SCIM is a powerful tool for automating user management across applications and systems, but it’s not a silver bullet for all identity-related challenges. Here are some things SCIM does NOT solve for in a large corporation:
In the schematic below, you can see how SCIM could work. Here, we are modeling a fictitious university with two systems that manage HR and student data.
The IDM needs to know what Employee accounts should be active and that can be sourced from the HR system with a SCIM message.
The IDM needs to know what student accounts should be active and that can be sourced from the Student system with a SCIM message. This is different than the security accounts (OPRID) that are created in the HR system.
The IDM then can take data sent by both systems and create or update accounts in the IDM system.
Then as a secondary step the IDM can send a SCIM message to the HR and Student systems to create or update accounts in those systems as well as any other systems that need to know about the new user.
If the user is removed from the IDM system then the IDM can send a SCIM message to the HR and Student systems to remove the user account.
We are glossing over a lot of details here but this is a high-level overview of how SCIM could work.
Maybe we should back up and introduce some terminology.
SCIM is about 2 systems talking to each other. One system is the SCIM Service Provider (SP), and the other system is the SCIM Client.
/Users
or /Groups
endpoints).The client uses the SCIM APIs provided by the service provider to manage user identities. This will make more sense when we look at some examples later.
A SCIM message is a JSON message that is sent from the SCIM Service Provider to the SCIM Client. The SCIM message contains information about the user account that needs to be created, updated, or deleted. The SCIM message is sent over HTTP using the REST API.
Let’s look at a simple example of a fictitious Employee SCIM message.
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName": "jdoe",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"displayName": "John Doe",
"emails": [
{
"value": "jdoe@university.edu",
"type": "work",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+1-555-123-4567",
"type": "work"
}
],
"roles": [
{
"value": "Financial Aid Specialist",
"type": "department"
}
],
"department": "Financial Aid",
"organization": "University of Example",
"title": "Financial Aid Officer",
"active": true,
"addresses": [
{
"type": "work",
"streetAddress": "123 University Blvd",
"locality": "Example City",
"region": "State",
"postalCode": "12345",
"country": "USA"
}
],
"meta": {
"created": "2024-12-07T10:00:00Z",
"lastModified": "2024-12-07T10:00:00Z",
"location": "https://scim.example.edu/Users/12345"
}
}
The SCIM message contains information about the user account that needs to be created. The message contains the user’s username, name, email address, phone number, roles, department, organization, title, address, and other information. The message also contains metadata about when the user account was created and last modified.
The message structure has some standard parts and some ability to customize the message to fit your needs. The SCIM schema defines the message structure. The SCIM schema defines the structure of the message and the attributes that can be included in the message. The SCIM schema is a standard that is defined by the SCIM specification.
The client
system can use GET requests to retrieve user information from the service provider
system. The client
system can use POST requests to create new user accounts in the service provider
system. The client
system can use PUT requests to update existing user accounts in the service provider
system. The client
system can use DELETE requests to delete user accounts in the service provider
system. The client
is acting as the orchestrator of the user accounts. So, the client generally has a scheduling system to know when to send messages to the service provider.
A few more terms to know:
Since this book/website is about PeopleSoft, we will focus on some design choices and how to implement them in PeopleSoft.
Let’s imagine you are a University that uses OKTA as your Identity Provider.
That structure might look something like this:
Your organization might have the following automation needs:
When a New Student is Admitted to the University:
When a new Faculty Member is Hired:
When a new Student Records Employee is Hired:
Automating all of these account creations and updates is a lot of work. This is where SCIM can help. Again, SCIM is NOT a magic bullet but can help automate some manual work.
What are the first challenges that you might face when implementing SCIM in PeopleSoft?
First, you need to map out what the source systems are and what data they have?
This employee data looks great and is a good start. However, the HR department generally designs many of these data elements around their own needs for managing employees and employee reporting and NOT around the needs of the other systems that need to know about the employee. What do I mean by this? If we take an employee who is an adjunct faculty member. HR might have this person flagged as a part-time employee with a Job Title of “Adjunct Faculty”. That is fine. However, when you start to get to automation you may find out that this data is not granular enough in some situations. For example, you might have 2,000 Adjunct Faculty members and some of your Colleges and Departments have access to different applications. The roles/groups in the target applications might differ based on the school and department they work for. HR may not have that detailed information because it was not required to pay the employee and issue a W2 at the end of the year. Some of that data might be in the Campus Solutions system that designates the employee as a faculty member in the College of Business who needs special access to some applications.
To further compound the situation, mergers, acquisitions, and reorganizations can make this data even more complex as it evolves and changes over time with a mix of old and new data elements.
The student data is structured around the needs of the Student system and not around the needs of the other systems that need to know about the student. The same issues that we discussed above for employees apply to students as well. It can get complex quickly.
Recommendations:
You then need to map out the workflows for how the data will flow between the systems.
If we look at a system like PeopleSoft Campus Solutions there are additional areas of security outside just technical access security. There are also areas of security that are more about the data that the user can see and interact with. This is often called “Application Level Security” in PeopleSoft. This is a complex area of security that is often overlooked in SCIM implementations.
In finance systems, you might have “budget approvers” who can approve budgets for their department. This is not a technical security role but a data security role. SCIM does NOT handle this type of security. You need to have a plan for how to handle this type of security.
In my experience working with OKTA at several organizations OKTA can help automate the user account management process.
OKTA accomplishes by using a Profile Master
and then representing each application (i.e Cloud app) with a “Profile” that is a combination of data from the source systems. It allows mapping of attributes. As the data changes in the source system and is fed to the Profile Master
the Profile is updated and then SCIM messages are sent to the target systems to keep the user accounts in sync. This is a very powerful concept and allows for a lot of flexibility in how you manage user accounts. It allows mapping of attributes. As the data changes in the source systems the Profile is updated and then SCIM messages are sent to the target systems to keep the user accounts in sync.
OKTA has ways to do straight mapping of the values to the source systems but also transform those mapping to concatenate values, split values, and do other transformations to the data. In some case, the target systems cannot handle SCIM but they may accept these attributes with “SAML Assertions” and some applications can provision and sync data from OKTA using SAML.
If you have gotten this far then you are ready to start designing the SCIM Service Provider APIs in PeopleSoft. A “Service Provider” is a system that exposes the SCIM API and accepts SCIM messages from the SCIM Client and updates security profiles. It is the system that is being updated by the SCIM messages.
This involves implementing some key REST Service Operations in PeopleSoft to handle the SCIM messages. Constructing the core service operations is not that complicated. The most complicated part is first parsing the JSON message and then mapping the data to the PeopleSoft objects. Of course, will be using CI according to best practices. You also have to handle the different types of SCIM messages that can be sent by the SCIM Client and make sure you are sending back the correct response codes and data. Since you are likely working with an IDP that is sending SCIM messages that sending system is likely expecting a certain response code and data back. That IDP system often cannot be changed to accommodate your system. You need to be able to handle the SCIM messages that are sent to you.
This is a high-level overview of the steps involved in implementing PeopleSoft as a SCIM Service Provider:
SCIM is a powerful tool for automating user management across applications and systems. It simplifies user management, improves security, and reduces administrative overhead. SCIM is not a silver bullet for all identity-related challenges, but it can help automate some manual work. SCIM is a standard that is defined by the SCIM specification and is based on REST APIs. SCIM uses JSON messages to exchange user identity information between systems and defines a standard schema for representing user attributes.