A common use case is as a non CRS licensed user (sales user) I want to be able to see the status of the Screening Case record associated to the Account record I am on so that I know if I can progress with the next step in our sales process.
The Screening Case object is limited to licensed users; however, it is possible to copy data from the screening case object to the source record which can then be viewed by your wider universe of users. The method you use to do this depends on the version of CRS you are running and the data model you have adopted. In this example we will use a cross object formula field utilising a field “Primary Screening Case” we created in a previous tutorial.
Customer Risk Screener can support a one-to-many relationship between a source record e.g. one Account can have a number of Screening Cases linked. In practice many organisations have a one-to-one relationship between a record and an associated screening case.
If your organisation has many Screening Cases per source record, then you will need to decide which Screening Case writes back information to the record e.g. the most recently created vs the most recently reviewed by compliance?
There is no state model that a screening case goes through, however various actions happen to a case and update fields that can be used to interpret what is happening systematically.
The following fields from the Screening Case object can be used to interpret the status of a case.
Field Label |
Field API Name |
Comment |
Screening Complete |
tr_wc1__Screening_Complete__c |
Boolean. This informs you if World-Check has completed screening the record and returned results or not. |
Action Required |
tr_wc1__Action_Required__c |
Boolean. This informs you if there are any a) “Unresolved Matches” or b) matches where “Review Required” is >0 (e.g. the OGS process has run and records have been updated which you may wish to review) |
Total Matches |
tr_wc1__Total_Matches__c |
Integer. Gives the total number of matches returned. Note this will be the total of unresolved, positive, possible, unspecified and false matches. If = zero then no matches have been found in World-Check |
Unresolved Matches |
tr_wc1__Unresolved_Matches__c |
Integer. Gives the total number of unresolved matches that require vetting by compliance |
Review Required |
tr_wc1__Review_Required__c |
Integer. Gives the total number of records updated since the last OGS run or rescreen. |
Risk Rating |
tr_wc1__Risk_Rating__c |
Picklist. Manually set by the user when reviewing the case and represents their judgment of the risk associated to the case. Values are:
“No Risk” “Low” “Medium” “High” “Unknown” |
Any field from the Screening Case object can be written back to the source object using flows or cross object formulas. What is right for your org depends on your state model and the process you have designed. You should consider whether there are any privacy concerns for exposing fields to a wider universe of your user base before you do this.
The following cross object formula assumes a 1-2-1 relationship between a screening case and a source record. It utilises a custom Lookup field on the source object called “Primary Screening Case”. This field is not included in the package. It also assumes that you are using the field Risk Rating introduced in the 6.2 package. Customers on earlier versions may be using the field Risk Resolution instead.
This sample formula demos the art of the possible, you should write a formula/solution that meets your own business objectives/processes, using fields relevant to your process.
/*1. Case not yet created*/
IF(ISBLANK(Primary_Screening_Case__c), " Not started",
/*2. WC1 not yet returned results*/
IF(AND(!ISBLANK(Primary_Screening_Case__c), Primary_Screening_Case__r.tr_wc1__Screening_Complete__c != true ) , " Screening in progress",
/*3. Zero matches returned*/
IF(AND(!ISBLANK(Primary_Screening_Case__c), Primary_Screening_Case__r.tr_wc1__Screening_Complete__c = true, Primary_Screening_Case__r.tr_wc1__Total_Matches__c = 0 ) , "No Matches Found - Proceed",
/*4. Action required + no risk rating applied yet*/
IF(AND(Primary_Screening_Case__r.tr_wc1__Action_Required__c =true , ISBLANK(TEXT(Primary_Screening_Case__r.tr_wc1__Risk_Rating__c))), "Pending compliance review",
/*5. Risk Rating not yet applied*/
IF(AND(Primary_Screening_Case__r.tr_wc1__Unresolved_Matches__c = 0 , Primary_Screening_Case__r.tr_wc1__Action_Required__c = false, ISBLANK(TEXT(Primary_Screening_Case__r.tr_wc1__Risk_Rating__c))), "Pending compliance review",
/*6. Action required due to OGS or rescreen (risk rating already applied)*/
IF( AND(!ISBLANK(TEXT(Primary_Screening_Case__r.tr_wc1__Risk_Rating__c)),Primary_Screening_Case__r.tr_wc1__Action_Required__c =true) , " Pending additional review",
/*7a display risk rating*/
IF( AND(OR(
ISPICKVAL(Primary_Screening_Case__r.tr_wc1__Risk_Rating__c, "No_Risk"),
ISPICKVAL(Primary_Screening_Case__r.tr_wc1__Risk_Rating__c, "Low")),
Primary_Screening_Case__r.tr_wc1__Action_Required__c !=true) , " Completed - Low or No Risk",
/*7b display risk rating*/
IF( AND(OR(
ISPICKVAL(Primary_Screening_Case__r.tr_wc1__Risk_Rating__c, "Medium"),
ISPICKVAL(Primary_Screening_Case__r.tr_wc1__Risk_Rating__c, "High"),
ISPICKVAL(Primary_Screening_Case__r.tr_wc1__Risk_Rating__c, "Unknown")),
Primary_Screening_Case__r.tr_wc1__Action_Required__c !=true) , " Completed - Unknown, Medium or High risk",
""))))))))