Pollard Financial Mock Solution

There are many ways how to study for the CTA board, most of them – at the end – are about practising the solution of different mock scenarios. They are different in size (read length), complexity, verticals, things you want to use. And some of them are more focused on specific areas, such as Pollard Financial, which I heard is a lot about security.

My approach was to solve the scenario and then I tried to compare my notes with others, watch recordings how people present it and take the best parts. And with this scenario I tried to put it in writing, because I do not agree with the solutions I saw and because I want also practise how deep into the details I need to go. Curious about your comments and what you believe will not work or where you have a different, and maybe better, solution.

Licences

This is probably the only scenario where Sales Cloud Licence is overkill even though I used it at the beginning as I used the Orders for the Investment Plans.

But Platform License will be sufficient with using Account, Contact, Account Team, Contract and custom objects.

As we have roughly 20M community users which will log in once in a while we will use the Customer Community Login licence. Also with the latest release the limit on CC users went way higher.

We will use Single Org strategy (Unlimited Edition) to simplify the deployment and management, especially as some of the users spans multiple offices.

Role Hierarchy

By default you can almost draw the role hierarchy just based on the involved users because in most cases it will mimic the organizational structure. But in this case I will put the Sales Support Assistant right under the CEO as creating a role for each Sales Rep (800+ roles) doesn’t sound future proof.

Calculations

  • 20M Accounts (as we use Person Account);
  • 20M Contacts;
  • Contracts: 300K+;
  • Investment Plan Options: 300K+;
  • Investment Plans: 20M+ (will be offloaded to DWH once not active);
  • Invested Funds: 200M+ (estimate each client invest in 10 funds);
  • Funds: 100;
  • Fund Reports: 6000 (5 years monthly history for 100 funds);
  • Business Infos: 300K (one for each business account);
  • Account Contact Relationship: 15M (for each business client employee);

In total: 270M of records = 540GB of used space; 3600 users * 120MB = 432GB allowable space.

Files:

  • 6000 reports * 1MB file size = 6GB, well within 2GB/user limit (7,2TB)

Data Model

Pollard Financial Data Model

Basic client information, such as name, address, email, and tax identification number.

  • Account, Contact and Person Account;

Information regarding the type of client, which can be individual clients or clients associated with a business account. If the client is associated with a business, PFS needs the ability to access the related business account information.

  • Type = record type;
  • Account Contact Relationship to link clients (Contact) to business Account;

Investment plans, which are created yearly and may be updated more frequently. Investment plans describe how the client is investing across a variety of funds. The investment plans need to be retained for regulatory purposes.

  • Investment Plan custom object;
  • non-active plans archived via ETL to DWH for regulatory purposes, no reason to surface them in SF;

Fund reports that describe the performance history of a given fund. These are associated with any investment plan that includes the fund. Therefore, a given report may be associated with different clients.

  • due to requirement below to share only with clients who invested in the fund we cannot use Files as they allow only to be shared with up to 2000 entities and we cannot use Groups and add CC users to them;
  • Considered: Chatter Group per fund and auto adding/removing users to these groups, where we will share the reports. Drawback: when client stop investing in the fund they should not be able to see the newer reports but at the same time we don’t want to remove them from the group as they will lose access to the history as well;
  • Custom object with lookup to the Fund (custom object or use Product2 for this) which will have APEX sharing with clients who have invested at that time.

Investment plan performance reports that describe the current performance of the client’s investment plan. They are provided monthly and need to be retained for regulatory purposes.

  • Considered: Files on the Investment Plan custom object, but with 20M clients and 12+ months history this will use a lot of file space. Also as the Investment Plans, which can be updated yearly or more often, will make it hard to navigate the files;
  • Custom LWC (on Account or Investment Plan depending on client user needs) which will render it on the fly for period specified by the (running) user based on data get by callout from APEX controller from the financial system with history of prices of each fund.

Business Requirements

Basic client information, including associated documents, should only be visible to their assigned client sales representative, their sales support assistants, and their direct line management.

  • OWD on Account is Private, will use Account Team for assistants, role hierarchy in place so their managers will see it;
  • as Account Team works the same as other sharing I had to put assistants on top of the hierarchy, otherwise their access will share the records with all other managers as well;
  • Manager Groups looks tempting but sadly their implementation is different from what we would need – it doesn’t share the record (by default) just with the manager specified on user record, but sharing rules can be added for each manager. Role hierarchy is still respected;

Client sales representatives can choose to share client information with other client sales representatives, but should not be able to share client information with sales support assistants who are not assigned to them.

  • The Account Team object is first class object so I’ll use validation rule on it to compare user type (role name or new custom field) and if it is Sales Support Assistant will check who is their Manager and whether it is the same one as the Account owner;
  • Considered: custom LWC to allow for selection just of specific users and add them to the Account Team, but it is overkill for this purpose;

General business account information should be accessible to client sales representatives who work with employees of the business, but all other business information should be available only to the assigned business sales representative.

  • custom object with OWD private, which will be owned by the Account owner and will have Hierarchy sharing off;
  • after save flow on Account on owner change which runs in system context and will change the owner of these child records when owner change;
  • Considered: FLS and different page layout, but my understanding is that „client sales representatives“ and „assigned business sales representative“ are the same type of users, the distinction is just about account ownership, hence the FLS and different page layout will not work. Custom LWC with APEX controller without sharing or Screen Flow in system context and conditional drawing will be overkill.

Business account sales representatives should not have access to the related employee accounts.

  • I understand this requirement as that the employees can have their private account as well and sales reps should not be allowed to see it;
  • Account OWD private, use of Person Account for all employees and Account Contact Relationship to link them to the business account;

The investment plan and investment plan performance reports specific to a client and should have the same security requirements as the basic client information.

  • Assumption: basic means the same as in the requirement 1, not requirement 3;
  • custom object with Master-Detail relationship to Account;
  • the Custom LWC for performance reports will check the access for running user.

Fund reports should be visible to all internal users.

  • we share these files with a records in custom object related (Lookup) to Fund custom object; View All permission for internal users;
  • alternatively the files can be shared with All Internal Users and be put in one folder for easy access. They should also be linked from the Fund record for easy access from this side (not shared with clients).

Clients must be able to see their investment plan, their investment plan performance reports, and their associated fund reports.

  • read permission for the Investment Fund object, Master-Detail to (Person) Account, which is shared with client; custom LWC for the investment plan performance reports as mentioned above, custom object with APEX Managed Sharing for fund reports (see above);

A fund report must only be available to clients who have invested in the fund.

  • Custom Object with Files attached;
  • APEX Managed Sharing of the record with all clients who have investment in that period;

Clients must be able to view and edit basic personal information, such as address and phone number

  • read access to the account is provided by default in community, Sharing Set to provide Write access (User.Contact.Account = Account)

Clients must also be able to upload documents to share with their assigned client sales representative.

  • Considered: Files uploaded to the Account, but this will share it with all the other people as well;
  • if that is not the intention we need to create a screen flow, which will create a Case (OWD Private), assign it to the Account owner and upload the file to the Case. Sharing Set to share the case with the client (Case.Account = User.Contact.Account)

Comments, Ideas?

I’m interested in hearing you – what I didn’t considered, what will not work, where you see challenge, am I detailed enough? Please write a comment, happy to collaborate on this.

The whole scenario for your reference

For the hypothetical scenario described below, the candidate will have 45 minutes to read,  evaluate, and document a high-level architectural solution. The solution should:  

  • Describe the security and the rationale for the solution.
  • Identify any potential key risk areas.

The candidate should target the presentation to a technical Information Technology (IT)  architecture audience. In cases where requirements are not explicitly stated for the scenario, the  candidate should use his or her best judgment and make appropriate assumptions based on the  information provided. The candidate should indicate to the review board any assumptions that  were made when designing the proposed solution. The candidate will not have an opportunity to  ask clarifying questions related to the hypothetical scenario.  

The candidate will be evaluated on his or her ability to assess the scenario requirements, design a  solution, communicate the proposed architecture, and justify the design decisions. The candidate  will not be evaluated on the tools used for the presentation. 

Project Overview 

Pollard Financial Services (PFS) specializes in individual investment strategies with over 25 field  offices within the United States, serving over 20 million clients. PFS serves 5 million individual  clients directly and 15 million clients who are employees of businesses that have chosen to use PFS.  PFS serves 300,000 businesses. PFS is planning a Salesforce implementation to support their sales  process. 

PFS will have approximately 4,000 Salesforce users as described below: 

  • 800 client sales representatives, who are associated with a specific field office, and are  responsible for managing both individual and business clients.
  • 100 business sales representatives who span field offices and are responsible for managing the  relationships with business accounts.
  • 2,700 sales support assistants, who are assigned to specific sales representatives. Generally,  there are three support assistants assigned to each sales representative.

As part of the Salesforce implementation, PFS would like to include a portal that allows clients to  review specific account details and upload documents for their assigned client sales representative.

Data Model Requirements 

For each client account, PFS needs to track: 

  • Basic client information, such as name, address, email, and tax identification number. 
  • Information regarding the type of client, which can be individual clients or clients associated  with a business account. If the client is associated with a business, PFS needs the ability to  access the related business account information.
  • Investment plans, which are created yearly and may be updated more frequently. Investment  plans describe how the client is investing across a variety of funds. The investment plans need  to be retained for regulatory purposes.
  • Fund reports that describe the performance history of a given fund. These are associated with  any investment plan that includes the fund. Therefore, a given report may be associated with  different clients.
  • Investment plan performance reports that describe the current performance of the client’s  investment plan. They are provided monthly and need to be retained for regulatory purposes.

For each business account, PFS needs to track: 

  • Basic business information, such as name, address, email, and tax identification number. 
  • Investment plan options.
  • Associated employees.
  • Negotiated contract details.

Accessibility Requirements 

PFS has a very competitive sales environment, and therefore has strict data visibility requirements  for its sales users: 

  • Basic client information, including associated documents, should only be visible to their  assigned client sales representative, their sales support assistants, and their direct line  management.
  • Client sales representatives can choose to share client information with other client sales  representatives, but should not be able to share client information with sales support assistants  who are not assigned to them.
  • Specific information about a client or a business account, such as tax identification number,  should only be visible to the assigned sales representative.
  • General business account information should be accessible to client sales representatives who  work with employees of the business, but all other business information should be available  only to the assigned business sales representative.
  • Business account sales representatives should not have access to the related employee  accounts.
  • The investment plan and investment plan performance reports specific to a client and should  have the same security requirements as the basic client information.
  • Fund reports should be visible to all internal users.

For PFS clients, the data visibility requirements are: 

  • Clients must be able to see their investment plan, their investment plan performance reports,  and their associated fund reports.
  • A fund report must only be available to clients who have invested in the fund.
  • Clients must be able to view and edit basic personal information, such as address and phone  number
  • Clients must also be able to upload documents to share with their assigned client sales  representative.

2 komentáře

  1. Hi Martin
    FundsReports to be shared with client- if we use Apex managed sharing then we need CC+ license of Client?

    Thanks
    Regards
    Sarabjeet Pal

Leave a Reply