As a manager, I want to be able to manage my Users, so that I have control of my own resources and my Salesforce Administrator can focus on other tasks.
The smarter way to manage Salesforce.
Create 100% consistent users automatically
Allow non-Admins to manage their own team’s permissions
Visualise and report service agent productivity live
Sort, prioritise and dispatch critical Cases instantly
Do You Need Developers?
As a manager, I want to be able to manage my Users, so that I have control of my own resources and my Salesforce Administrator can focus on other tasks.
The management of user accounts, both creation and deactivation, is a standard task in administration. While employing delegated administrators can alleviate the burden of this repetative task, the care required to ensure accurate settings is often compromised, especially when dealing with a multitude of user accounts.
By harnessing the power of Salesforce Flow, I created a solution that empowers non administrators to effortlessly create new users with a simple selection of a user type:
Given a new user is created
When user type X is selected
Then automatically populate the complete User record for a user of Type X
And assign the user to the appropriate public groups
And enrole the user in any neccessary chatter groups
And grant the user any necessary permission sets
And optionally send the user email instructions on SSO login and MFA
And notify all system administrators of the newly created user
| Page Layout In User Object | |
|---|---|
|
|
This refined process ensures a consistent and error-free creation of users with specific roles/profiles. Furthermore, a complementary flow handles user deactivation with precision. The process entails:.
Given a user
When the user is inactivated
Then assign the user to a dedicated 'Cemetery' role/profile
And remove all associated public groups
And revoke any assigned permission sets
And notify all system administrators of the newly deactivated user
This approach guarantees that all deactivated users are systematically tidied away, separated from the operational directory and rendered with zero data access. The result is an impeccably managed user ecosystem, fostering efficiency and maintaining data integrity.
As a manager, I want to be able allocate my Users into Teams, so that I can see where each User is currenly working and so I can swifty allocate Users to areas of the business that need resources.
The ability for management to understand which users are assigned to which teams in Salesforce is limited. The User object has restricted capabilities and cannot be shared with non administators. In order to allow managers to understand where there staff are located another way must be found.
Simplified Data Model

To address these challenges an enhancement was made to the User Management flow by introducing a new Custom Object called "User Agent". A new User Agent record was auto created each time a new User was created. This User Agent object serves as a user record that can be shared with managers and supervisors through sharing settings. A multi-picklist field was incorporated to document all available public groups. Groups were renamed 'Teams' in the UI to simplyfy the concept for end users. This allowed management to:
Overall, these enhancements simplified user management and provided a comprehensive view of teams and agents. By leveraging the new User Agent record, managers and supervisors could efficiently manage teams, assign specific abilities, monitor permission sets, and foster collaboration through Chatter groups. All without requiring any Delegated Administration rights.
| User Agent List View | |
|---|---|
* Example includes Usual work channel and ave 30 day productivity (chats, Emails, Calls)
|
|
By implementing this mechanism, the complexities associated with user-team dynamics in Salesforce were effectively managed. This solution empowers management to take charge of user management tasks, relieving administrators from undertaking these administrative procedures.
As a Service manager, I want to be able to monitor the performance and productivity of my team both historically over time each day and in real time by viewing all my resources currently working.
The standard Salesforce method of monitoring and reporting on agent metrics for calls, emails, chats, and messages, within Salesforce presents challenges due to its fragmented nature. Each communication type is logged on different objects. As a result, generating consistent reporting requires the use of multiple reports operating on these different objects. This lack of a unified data source creates complexities, makes it difficult for non-admin users to understand, and necessitates ongoing maintenance efforts.
To streamline and simplify the reporting methodology for service activity, a more cohesive approach was implemented. This involved logging each communication, whether it is a call, email, or chat, as a designated 'Coms' Task within Salesforce. Each Coms Task is assigned a relevant type (Call, Email, Chat), ensuring consistency across all communication channels.
By consolidating all communication activities into a standardized Task format, the reporting process becomes more efficient and user-friendly with easier aggregation and analysis of service-related data, enabling comprehensive reporting on agent performance, response times, and other key metrics.
To supplement the historical reporting capabilities and fulfill the need for real-time data, a simplified tabular interface was developed specifically for Service Management. This interface served as an extension of Omni Supervisor, providing up-to-date information in a user-friendly format. Building upon the Coms Task approach, additional enhancements were implemented by extending the User Agent object and introducing a new custom object called 'User Agent Data.' The high level requirements being:
Given a use
When the user logs into Salesforce.
Then create a User Agent Data record
And time stamp it as today
Given a user
When the user logs a Coms Task.
Then increment the relevant Email, Call or Chat counter field on their current days User Agent Data record
Given a user
When the user has logged 7 or more Coms Tasks
Then calculate which channel the agent is working for the day (Phone, Chat, Cases)
The primary purpose of the 'User Agent Data' object was to capture and log all service interactions that occurred throughout the day for each individual agent. This real-time logging mechanism ensured that the latest data on agent activities was readily available. This was then visualised in a custom Lightning Web Component
| Real Time Agent Productivity Table | |
|---|---|
* Note the Last Activity and Last Coms columns.
|
|
The logic behind this approach was to:
Overall, the extension of the User Agent object and the introduction of the User Agent Data custom object significantly enhanced real-time monitoring and reporting capabilities. This approach allowed Service Management to have a comprehensive overview of ongoing service interactions and make data-driven decisions to optimize agent performance and ensure high-quality service delivery.
Simplified Data Model

As a Service manager, I want my agents to work out of Omni Channel and work the most important cases first so that I know our customers are being serviced in the best, most efficent manner.
In Service Cloud, the use of lists or queues for agents to perform their work is generally inefficient. A more rational approach involves taking into account all the current cases within a business and employing an algorithm to prioritize them based on their significance/importance. Omni Channel can then be leveraged to assign cases to available agents in an orderly manner. This methodology is driven by the underlying logic that dictates maximizing efficiency and ensuring that high-priority cases are promptly addressed. Logic being:
Given a case
When case is related to team X
Then each hour, inteograte each case
And apply a scoring mechanisim on certain case fields
And sum the scoring to a total for each case
Given all cases are scored
Then order the cases from highest score to lowest score
And take the top 30 percent of cases
And and apply a priority of High to the top 30%
And take the next 30 percent of cases and apply a priority of Medium
And take the next 40 percent of cases and apply a priority of Low
And apply a priority of -None- to all other cases
The implementation of this methodology entailed certain complexities however. These complexities included:
To effectively manage these requirements, the algorithms were implemented using Custom Metadata Types. This approach allows for the application of a specific algorithm to one or more business units or teams, utilizing the Case record type associated with each business unit.
Custom Metadata Types provide the flexibility to configure various variables and values. For instance, it enables adjustments to the number of cases being prioritized, which proved beneficial during fluctuations in case or agent volumes. Furthermore, specific weightings can be applied to prioritize high-value customers or particular case types, allowing for targeted allocation and handling. The Custom Metadata Types also enable the dynamic addition or removal of business units from a specific algorithm, accommodating changes in organizational structure or operational needs.
By leveraging the capabilities of Custom Metadata Types, the business can fine-tune and customize the allocation process within Service Cloud to effectively address these requirements and achieve optimal resource allocation and case management.
The implemented changes were straightforward to implement and easy to comprehend for agents with only the addition of a simple custom navigation bar. Gone were the days of navigating through multiple list views and deciding which cases to work on. Instead at the beginning of each day, agents log into Omni Channel, select "Case" as their designated channel, and the system promptly allocates the next five cases with the highest priority. These cases then automatically open in separate tabs for efficient handling.
As a organisation, I want to be able to see member data, so that I have an understanding of who they are and their playing achievements .
The ability to provide external data to Salesforce historically has relied on developer input. This is changing rapidly with the ability for techically orientated Salesforce personel to leverage AI to create APIs that can retrieve data and build Lightning Web Components to show the data to the end user.
Given a new member is created
When system date is the first of the month
Then retrieve all members without a member profile record
And match to Sportmonk api record by shortname
And if found create a member profile record
Given a new member with a member profile
When they have a profile record
Then show their image and playing profile
And if they have match data
Then show their data grouped by match type and year
Selecting a data provider for Cricket data (Sportmonks) even via the free tier can provide player data to a full Salesforce instance given an ability to work around some of the limitations (number of records accessable/retriveable at one time etc).
| Player Stats & Profile via Sportmonk API. | |
|---|---|
Get player image, playing profile. If profile exists then get player career statistics and render in a LWC via game type and year.
|
|
Can AI fully replace a developer? Perhaps not, certainly creating an API may take a few days longer without one but many companies only have an administrator on hand. A developer resource might only be available via expensive a consultancy or via hiring a resource for a longer period of time. Leveraging AI is therefore utilising a current resource that the organisation already has to do work that previously they were not able to acheive.
Using Salesforce or indeed any software application always requires some overhead. Even a small enterprise may use a support company to manage email, computer hardware and software updates. Salesforce is no different, even the best implementation will always require some management but perhaps not via a 1.0 FTE staff member.
As a organisation, I need someone to manage my Salesforce instance 'part time', so that it is managed correcty but I don't have to employ an FTE.
Of course a company might have a few super users who can do the basics like create users or change a page layout but its only a matter of time before something will need attention. Many organisations then lean on the use of a Salesforce Consultancy. Using a company with experience in Salesforce seems logical but delve deeper and what are you really paying for? At the very minimumL
Every business uses software that needs a little care, whether it’s email, computers, or cloud systems. Salesforce is no different. Even a great implementation still needs management. But for most small and mid-sized businesses, that doesn’t mean hiring a full-time Salesforce Administrator.
Sooner or later something complex comes up; an automation stops working, a new report is needed, or Salesforce introduces an update that breaks a workflow. When that happens, many organisations turn to a Salesforce consultancy. On paper, that sounds ideal, experts on call when you need them. But take a step back first and you’ll see what you’re really paying for:
The problem?
Those team members change. Frequently. Your “maintenance” tasks are passed between junior consultants who have no context of your business. Knowledge gets lost. Work slows down. Quality drops. And because many consultancies use offshore developers, you never actually speak to the person doing the work. Instead, your requests move from you → AM → PM → Dev, and back again. Every handoff costs time, clarity, and ultimately money.
To make it worse, you’ll often be locked into a contract and monthly retainer, even if you don’t use the full hours.
There is a Better Way
Your team excels in what they do best, Salesforce probably isn’t one of those areas. When a consultancy quotes sixteen weeks for a project that could realistically take four, having a dedicated technical administrator can save your business tens of thousands of dollars.
- and yes, that’s a true story.