Challenge Overview

  • Create LWC (Lightning Web Components) to manage membership of users and salesforce queues based on the provided design

Project background

  • In Salesforce, only System Administrators have access to manage membership of User Queues. Also, there is no way to assign one user to multiple queues at the same time.

  • On process basis, it is cumbersome for business user to reach out to System Administrators every time to make the queue changes. The application which we will be creating will allow any business user with assigned privileges to add / remove users from queues and vice versa.

  • The Apex controller will be running with System privileges, hence user access privilege to Group, GroupMembership object will not come into the picture.

Technology Stack

Prerequisite

  • To work on this challenge, Please sign up for free developer account in Salesforce using this link. If you already have a developer account, you could use it as well.

  • After login, Navigate to set up page using the url or by using settings icon in home page and clicking on Setup

  • Follow the steps here to enable custom domain for your developer organization

  • Your custom domain URL should look something like https://{your-domain}-dev-ed.lightning.force.com

E.g https://sharathkumaranbu-dev-ed.lightning.force.com

  • Install Salesforce CLI (SFDX) by following the instructions given here

  • Login into your developer org from SFDX CLI

  • Install Node.js 10.x to lint your files

Challenge Assets

Following files are shared in the challenge forum which is accessible after registration.

  • Starter pack to begin LWC development. Please note that you would need to modify code in starter pack to fit the requirements of this application. E.g. Updating header component to make the header look like as given in this application.

  • Design source files and Marvel app link

Individual Requirements

Component development

  • Marvel app link for the application to be developed - https://marvelapp.com/d0gci34/screen/62688160

  • Please note most of the components in the application are reusable and hence it is easy to develop even though the number of screens may look high

Screens

Home page / search screen - https://marvelapp.com/d0gci34/screen/62688160

  • Search screen will allow the client to search for users / queues based on name / email

  • Number of users / queues that will be displayed in the table should be a configurable parameter in the code

  • On the initial load, it will get the list of users and queue in ascending order based on their name and first 10 (configurable) records should be displayed in the table.

  • Pagination should be server side and need to follow the approach of lazy loading

  • Table allows sorting in ascending / descending order based on name / email

  • Suggestions as shown in https://marvelapp.com/d0gci34/screen/62688161 is not required but the search should happen after 500 ms or 1 second after last key up, this will avoid multiple server side calls when the user is typing

  • If there are no results for given search text, Display the message “No Users / Queue found for the given key word. Please try again with different key word”


User Management - https://marvelapp.com/d0gci34/screen/62688163

  • In this screen we will display the queues in which the user is already having membership

  • The screen will allow to select multiple queues and remove the user from those selected queues

  • Add queue popup will allow to search for multiple queues and add them all together


Queue Management - https://marvelapp.com/d0gci34/screen/62688176

  • Queue management screens are similar to user management screens. The functionality is just reversed

 

Miscellaneous

  • Please use components from lightning library as much as possible. E.g. Use datatable to display the search results, etc..

  • For any icons, buttons or style required, please refer to lightning design system

  • Use pubsub module given in the starter pack to publish and consume events

  • Use 4 tab indentation consistently for JS, HTML and CSS files

  • Please use the existing lint command to ensure that there are no lint errors

  • Use Salesforce static resources if you need to upload any custom icon or images

  • Default salesforce loading indicator should be used when the application is waiting for data from server

Server side controllers

  • You would need to create server side apex controllers which will run with system privileges to access and update data in Salesforce objects. Please create those functions in QueueController.cls which is already present in the starter pack

Unit tests

  • Unit tests for LWC components is not required at this moment

Learning Resources:

Important Notes:

  • Review / Appeals phase for this challenge is shorter than usual. Please pay attention to the shortened timelines.

  • Please ensure that there are no lint errors

  • Please ensure that you are able to deploy the updated source code into a scratch org from Salesforce CLI

  • If you have any doubts, Please feel free to post it in the forum. We will be happy to resolve your queries as soon as possible



Final Submission Guidelines

  • From Salesforce CLI, generate password for the default administrator user in scratch org

  • Enter your application URL, scratch org administrator username and password in credentials.txt file.

  • Zip the credentials.txt file and updated source code and upload it using the Submit link

  • After submitting, please ensure that you are able to download your submission from Online Review

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30105000