• Giancarlo Amati
  • NEWBIE
  • 90 Points
  • Member since 2017

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 42
    Questions
  • 56
    Replies
Hi All,

I have enabled Email-to-case in my org and wanted to test the code for the case trigger that automatically creates a case milestone under the case, as per this LINK (https://help.salesforce.com/s/articleView?id=sf.entitlements_auto_add.htm&type=5).

When Email-to-case is enabled, any case is created by email, is created in SFDC by e2c, and the trigger is created BEFORE e2c has finished populating the fields on the case record. That makes it impossible to retrieve the entitlement from the account or the contact. 

SFDC Support captured the logs with me and they confirmed that this should not be the expected behavior. 

Has anyone found a different solution? 

Thank you,
]GC
 
Dear All,

we're building a Community portal and we need to track the first time a user login. 
the issue that changes the "Last login date-time" doesn't trigger an update event. 
How can we do that" for example I would need that once a user has login in there's a check box that becomes true.

Any suggestions?
GC

Hi All,

We are building an Experience Community. We'd like to implement the feature that when a user marks a feed comment/item with "Flag" see snapshot. The item will be unpublished. 

I tried to search for example of FeedComment and / or FeedItems, I think this can be done with a FeedItem trigger, but can't figure out hlw.

User-added imageThank you for your help.

GC

Hi Team,

I have a picklist field from the Contact object in my VF page. The code is the one below. However, when I select a value for the picklist and the I continue to complete the form, the Contact records gets refreshed, but the value that I selected on the VF page is not saved automatically in the field. 

Am I missing something? does it have to go through the controller? 
Thank you,

GC
User-added image

<apex:pageBlockSectionItem rendered="{!NOT(confirmMode)}" >
                    <apex:outputLabel value="LeadSource" />
                    <apex:outputPanel layout="block" styleClass="requiredInput">
                        <apex:outputPanel layout="block" styleClass="requiredBlock"/>
                        <apex:inputfield value="{!contactObj.LeadSource}"/>
                    </apex:outputPanel>
                </apex:pageBlockSectionItem>
                               
                
                <apex:pageBlockSectionItem rendered="{!NOT(confirmMode)}" />

                <apex:pageBlockSectionItem rendered="{!(confirmMode)}" >
                    <apex:outputLabel value="LeadSource" />
                    <apex:outputtext value="{!contactObj.LeadSource}"/>
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem rendered="{!(confirmMode)}" />

 
Dear All,
I'm developing a UnitTest class for a legacy Apex class. In the developer console from the full sandbox I get 77% code coverage and no error. When I try to move it to production I get the following error messages:

1. Class Name: UnitTest_MIPLibray, Method Name: testCreateTask:
System.DmlException: Upsert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CLDR.OpportunityModified: execution of AfterInsert caused by: System.QueryException: List has no rows for assignment to SObject Trigger.CLDR.OpportunityModified: line 22, column 1: []
Stack Trace: Class.MIPLibrary.createOpportunity: line 1116, column 1 Class.UnitTest_MIPLibrary.testCreateTask: line 574, column 1


2. ClassName: UnitTest_MIPLibrary, Method: testGetContact:
System.StringException: Invalid id: null
Stack Trace: Class.MIPLibrary.hasContactModified: line 820, column 1 Class.MIPLibrary.hasContactModified: line 689, column 1 Class.UnitTest_MIPLibrary.testGetContact: line 481, column 1

I don't understand how to fix it. To me, it all looks legit. The Outbound changeset (from FULL -> Prod), contains both the MIPLibrary and the UnitTest_MIPLibrary, and I validate the deployment only towards the UnitTest_MIPLibrary.

For the (1), this is the code in the unitTest class:
 
static testMethod void testCreateTask() {
        Account testAccount = null;
            testAccount = new Account();
            testAccount.Name = 'TestAccount';
            testAccount.Business_Unit__c = 'Digital Marketing';
            testAccount.Edition_Setup__c = 'Basic';
            testAccount.Naming_rights__c = 'NO';
            testAccount.Naming_Rights_Type__c = 'Full';
            
            Id userId = UserInfo.getUserId();
            User userObj = MIPLibrary.getUsersInfo(userId);
            
            
            
            /*MIPLibrary.createTask(testAccount, userObj, userObj, null, 'MQL', userId, userId, '', '', 'blah', '', '');
            MIPLibrary.createTask(testAccount, userObj, userObj, null, 'SQL', userId, userId, '', '', 'blah', '', '');*/
            MIPLibrary.createTask(testAccount, userObj, userObj, null, 'SAL', userId, userId, '', '', 'blah', '', '');
            
            Opportunity tmpOp = new Opportunity();
            Contact c1 = new Contact();
             c1.lastname = 'TestSALReleaseLastName1';
        c1.Stage_Once__c = 'Prospect';
        c1.Stage_Video_Cloud__c = 'Name';
        c1.accountId = testAccount.id;
        c1.Stage_Once__c = 'Name'; 
        c1.Stage_Video_Cloud__c = 'Prospect'; 
        Set<String> tmpProd = new Set<String>();
        tmpProd.add(MIPLibrary.VIDEO_CLOUD);
        
            MIPLibrary.createOpportunity(tmpOp, MIPLibrary.getOpportunityExistingBusinessRecordTypeId(), testAccount.id, c1.id, 'new opty', '0 - Prospecting',tmpProd, userId );
            
    }

For (2): 
static testMethod void testGetContact() {
       Contact ContactObj2;
        Id currentLoginUserId = UserInfo.getUserId();
        Account testAccount = UnitTest_MIPLibrary.insertAccount('TestSALReleaseModal');
        
        ContactObj2 = new Contact();
        ContactObj2.lastname = 'TestSALReleaseLastName1';
        ContactObj2.Stage_Once__c = 'Prospect';
        ContactObj2.Stage_Video_Cloud__c = 'Name';
        ContactObj2.accountId = testAccount.id;
        ContactObj2.Stage_Once__c = 'Name'; 
        ContactObj2.Stage_Video_Cloud__c = 'Prospect';   
        ContactObj2.MailingStreet = 'Street1';
        ContactObj2.MailingCity = 'City1';
        ContactObj2.MailingState = 'CA';
        ContactObj2.MailingPostalCode = '94588';
        ContactObj2.MailingCountry = 'USA';    
    
        MIPLibrary.getContact(ContactObj2.id, true); 
               
        MIPLibrary.getContact(ContactObj2.id, false); 
        MIPLibrary.hasContactModified(ContactObj2, ContactObj2 );
        
        ContactObj2.Stage_Video_Cloud__c = 'SAL'; 
        
        MIPLibrary.hasContactModified(ContactObj2.id, 'MQL', 'SAL', '');
        
        MIPLibrary.submitQualifying(ContactObj2.id);
        Id tempId = ContactObj2.id;
        MIPLibrary.updateContactRolesStr(tempId);
        
        MIPLibrary.checkContactEligibility(ContactObj2.id,'MQL');
         
    }

Thank you for any help.
GC


 

Dear All,
I am new to SFDC development and I wonder how difficult is the following project. Under the Account object we have a child-related list object, let's call it B-Object.

When I create a new record of B-Object under Account-A, I would like the form to show a list of Items with a checkbox at the top, similar to the view below.

User-added image
The list of records comes from another related object, let's call it 'C-Object'. 
Once I click save the 'B-object' record has a field (text field?) with the list of the IDs of 'C-Object' records selected during creation.

I'm open to any suggestion and or alternatives. If you have any examples please send it over. 
Many Thanks,

GC
 

Hi Team,
I have a strange situation: I have an opportunity trigger like the one below:
 
trigger OppClosedTrigger on Opportunity (after update) {
    for (Opportunity opp : Trigger.New) {
        if (opp.IsClosed && opp.IsWon) {
            ProvisionBCAccount.provisionAccountForOpportunity(opp);       
        }
    }
}

and yesterday we were getting the following exception:
Error:Apex trigger OppClosedTrigger caused an unexpected exception, contact your administrator: OppClosedTrigger: execution of AfterUpdate caused by: System.QueryException: List has no rows for assignment to SObject: ()

I don't understand what this might due to? Are the Opty Triggers async? or is there something else happening? 

Thank you for your help.

GC

Dear All,

after refreshing our full sandbox we noticed the following issue. We are using CPQ to create quotes. We have a button called "Preview Document". This brings us to a page where we can select the template. 

When we select any of the template, and press "Preview" we see the following error message:

core.apexpages.exceptions.ApexPagesGenericException: No Visualforce context has been established!

User-added imageI've never seen that error message before. Where can I look at?
Thank you.
GC
Hi Team,

I have a button on my layout that executes a Javascript, but when clicking on it I receive "Unexpected ===" where SBQQ__Quote__c.SBQQ__BillingFrequency__c is a picklist but I cannot understand why.

Any help?
Thank you
GC
this.disabled = true;
this.className = 'btnDisabled';
​​​​​​​if ( {!SBQQ__Quote__c.SBQQ__BillingFrequency__c} === null) {

window.alert(' The \'Billing Frequency\' field is blank and needs to be populated before submitting this quote for approval. Please update the \'Pay Upfront\' field on the associated opportunity to enter a value into \'Billing Frequency\' ' );

}
else
window.location='./apex/SubmitQuote?Id={!SBQQ__Quote__c.Id}';

 
Dear All,
I am reviewing an set of Apex Classes. Specifically I have a classe that uses a "Stage_Info__c" object. I checked in our production and there is no object called that way.

I checked the dependencies of the Apex class and I saw the screenshot below:

User-added image
I cannot find that object anywhere in our environment. I cannot find the declaration of the object in any of the source codes of the classes. 
Am I missing something ?

Thank you.
GC
0
I created a multi picklist field in my opportunity object. In the trigger I created I call the following:
 
BCAccountID_test__c= 'FIRST VALUE' + ';' + 'SECOND VALUE';

but those two values are then available to the "Selected" part of the multi-picklist, instead of the 'Available' value. (see attached screenshot).

User-added image
Thank you.
GC
Hi Everyone,
every Opportunity has an Account linked to it. Every Account has a child (custom object) BCAccount record list. 1 Account can have multiple BCAccount records.

The opportunity has now a field BCAccountOpty which is a multi picklist field. 
I have created the following method in a Class:
 
public static Map<String, BCAccount__c> getBCAccountsForAccount(Set<Id> accountIds) {
      Map<String, BCAccount__c> bcaccountMap = new Map<String, BCAccount__c>();
    if(accountIds.size() > 0 ){
      for(BCAccount__c bcAccount : [Select Id, name, Account__c, recordTypeId, BCAccountId__c, Account__r.ownerId from BCAccount__c where Account__c in :accountIds ]){
        bcaccountMap.put(bcAccount.BCAccountId__c, bcAccount);
      }
      }
    return bcaccountMap;
    }

 
/*Builds the list of Available BCAcount from the Account.Id*/
public static void getBCAccounts(Opportunity optyObj) {
      Map<String, String> availableBCAccountsMap;
      Set<Id> accountIds = new Set<Id>();
      accountIds.add(optyObj.accountId);
      
        Map<String, BCAccount__c> bcAccountMap = getBCAccountsForAccount(accountIds);
        if(!bcAccountMap.isEmpty()){
          for(BCAccount__c bcAccount : bcAccountMap.values()){
            availableBCAccountsMap.put(bcAccount.BCAccountId__c, bcAccount.Name);
          }          
        }
    
    }
and one opportunity trigger which now looks like below. Now I need to populate the field "BCAccountOpty" when the opportunity is edited. 
I cannot figure out what I feel I need to build a 'for' loop over a List<SelectedOption> objects on the 'avlBCAccounts' variable. But what is the method to populate the actual BCAccountOpty field?


 
trigger OpportunityAvlbBCAccounts on Opportunity (after delete, after insert, after undelete, after update, before delete, before insert, before update) {

List<SelectOption> avlBCAccounts = new List<SelectOption>();

if(Trigger.isBefore){

        if(Trigger.isInsert || Trigger.isUpdate){
            Opportunity_GET_BCAccountUtils.getBCAccounts(trigger.new[0]);
            avlBCAccounts = Opportunity_GET_BCAccountUtils.getAvailableBCAccounts();
            for (List<SelectOption> c : avlBCAccounts) {
                 
            }
        }
    }
}

Thank you.

GC
 

Dear All,

I don't understand process builder which I thought it was a nicer way to build workflows.
I have a very simple process builder which checks a few fields value and if the condition it's true than it does an action. This happens when an oppty is closed won.
However, the process builder is failed with the following error:

We can't save this record because the “Account Activation Case From Opp v2.2” process failed. Give your Salesforce admin these details. An unhandled fault has occurred in this flow
An unhandled fault has occurred while processing the flow. Please contact your system administrator for more information. Error ID: 1516978112-91599 (-1701038169)

I don't understand what I need to fix here. The condition is super simple.
User-added image
Dear All,

I need to delete like 2M records from our environment and I wonder if there's any way I could do by scheduling a job so not to impact on the performace of our instance. 

How can I do it? 
Thank you.
GC
Dear Team,
I have a process builder flow which simply checks the value of a field and it updates another field in the Account record. 
Oddly, another update process somehow made the FLOW failing so many times that I received the following error message. I don't understand then the connection between the two flows. 

Any suggestions on how to fix it? Oddly this happens quite often when I create processes with Process Builders, but it doesn't happen when I create actual Workflows. 

Thank you.
GC

The flow tried to update these records: null. This error occurred: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: DSCORGPKG.DiscoverOrgCustomMapping_Account: System.LimitException: Apex CPU time limit exceeded. You can look up ExceptionCode values in the SOAP API Developer Guide.---The flow tried to update these records: null. This error occurred: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: DSCORGPKG.DiscoverOrgCustomMapping_Account: System.LimitException: Apex CPU time limit exceeded. You can look up ExceptionCode values in the SOAP API Developer Guide.​​​​​​​

User-added image
 
Dear All,

I've build a process in process builder that based on the value of a field 'A' it then update the value of field 'B'. However, 'B' is still editable by our Rep. Is there a way to understand that if 'B' is edited manually, then the action from the Process should not happen? 
 
Dear All,

we have just released a new naming convention for our contract names. We have a "Contract ID" field in the opportunity which is a text. 
How can I make sure that the text matches a certain pattern? For example, the convention we have set is:

6LettersAccount-date - Customer FULL NAME - Product name

So the three parts are separated by a dash. Is there something in salesforce that can help me to do some Patter Matching with Validation Rules? 

Thank you.
Hi Everyone,

I am currently reviewing the validation rules on opportunities. I've found the following lines, which I'd like to understand. Within the context of a validation rule which triggers the error only when the rule is True, what does these formulas do? Do they related to "Related Lists" child objects of the opportunity? 

Thank you.

NOT(ISBLANK($ObjectType.Live_Event_Coverage__c.Fields.Live_Event_Allotment_Opportunity__c)), /*allows Live Events to process*/
NOT(ISBLANK($ObjectType.SE_Customer_Solution__c.Fields.Opportunity__c )), /*allows SE Customer Solutions to process*/
NOT(ISBLANK( $ObjectType.Live_Event_Coverage_Timing__c.Fields.CoverageLink__c)), /*allows Live Event Timings to process*/
Dear All, 
can someone help me out to understand what is this about? I am sure I haven't deployed any flow in production, is it possible that it's using TLS 1.1 version which has been deprecated?

Thank you .G


Apex script unhandled exception by user/organization: 0051400000B2jVZ/00D300000000ab7

Failed to process batch for class 'DB4SF.PageViewSchedulable' for job id '7071O00006jAlEm'

caused by: System.CalloutException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 503 Service Unavailable"

Class.DB4SF.DBAPI.execute: line 63, column 1
Class.DB4SF.PageViewSchedulable.execute: line 85, column 1
Hi Team,

I'm reviewing an Apex Batch job that failed overnight. I would like to update the email address that it sends in case of failure. I cannot figure out where this is built, but I've found this code in the Apex Class. There is a function called 'Label.BatchJobMonitors.split(';')' but I cannot find the definition. The 'toAddresses' is build based on that.
Any help?
Thank you
String status = (String.isEmpty(job.Status)) ? '' : job.Status;
          status = status.toLowerCase();
          ApexClass ac = [SELECT Id, Name FROM ApexClass WHERE Id =: job.ApexClassID];
      String className = ac.Name;
          Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
          String[] toAddresses = Label.BatchJobMonitors.split(';');
          mail.setToAddresses(toAddresses);
          mail.setSubject(subject);

 

Hi All,

We are building an Experience Community. We'd like to implement the feature that when a user marks a feed comment/item with "Flag" see snapshot. The item will be unpublished. 

I tried to search for example of FeedComment and / or FeedItems, I think this can be done with a FeedItem trigger, but can't figure out hlw.

User-added imageThank you for your help.

GC

Dear All,

after refreshing our full sandbox we noticed the following issue. We are using CPQ to create quotes. We have a button called "Preview Document". This brings us to a page where we can select the template. 

When we select any of the template, and press "Preview" we see the following error message:

core.apexpages.exceptions.ApexPagesGenericException: No Visualforce context has been established!

User-added imageI've never seen that error message before. Where can I look at?
Thank you.
GC
Hi Team,

I have a button on my layout that executes a Javascript, but when clicking on it I receive "Unexpected ===" where SBQQ__Quote__c.SBQQ__BillingFrequency__c is a picklist but I cannot understand why.

Any help?
Thank you
GC
this.disabled = true;
this.className = 'btnDisabled';
​​​​​​​if ( {!SBQQ__Quote__c.SBQQ__BillingFrequency__c} === null) {

window.alert(' The \'Billing Frequency\' field is blank and needs to be populated before submitting this quote for approval. Please update the \'Pay Upfront\' field on the associated opportunity to enter a value into \'Billing Frequency\' ' );

}
else
window.location='./apex/SubmitQuote?Id={!SBQQ__Quote__c.Id}';

 
Dear All,
I am reviewing an set of Apex Classes. Specifically I have a classe that uses a "Stage_Info__c" object. I checked in our production and there is no object called that way.

I checked the dependencies of the Apex class and I saw the screenshot below:

User-added image
I cannot find that object anywhere in our environment. I cannot find the declaration of the object in any of the source codes of the classes. 
Am I missing something ?

Thank you.
GC
Dear All,

I don't understand process builder which I thought it was a nicer way to build workflows.
I have a very simple process builder which checks a few fields value and if the condition it's true than it does an action. This happens when an oppty is closed won.
However, the process builder is failed with the following error:

We can't save this record because the “Account Activation Case From Opp v2.2” process failed. Give your Salesforce admin these details. An unhandled fault has occurred in this flow
An unhandled fault has occurred while processing the flow. Please contact your system administrator for more information. Error ID: 1516978112-91599 (-1701038169)

I don't understand what I need to fix here. The condition is super simple.
User-added image
Dear Team,
I have a process builder flow which simply checks the value of a field and it updates another field in the Account record. 
Oddly, another update process somehow made the FLOW failing so many times that I received the following error message. I don't understand then the connection between the two flows. 

Any suggestions on how to fix it? Oddly this happens quite often when I create processes with Process Builders, but it doesn't happen when I create actual Workflows. 

Thank you.
GC

The flow tried to update these records: null. This error occurred: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: DSCORGPKG.DiscoverOrgCustomMapping_Account: System.LimitException: Apex CPU time limit exceeded. You can look up ExceptionCode values in the SOAP API Developer Guide.---The flow tried to update these records: null. This error occurred: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: DSCORGPKG.DiscoverOrgCustomMapping_Account: System.LimitException: Apex CPU time limit exceeded. You can look up ExceptionCode values in the SOAP API Developer Guide.​​​​​​​

User-added image
 
Hi Everyone,

I am currently reviewing the validation rules on opportunities. I've found the following lines, which I'd like to understand. Within the context of a validation rule which triggers the error only when the rule is True, what does these formulas do? Do they related to "Related Lists" child objects of the opportunity? 

Thank you.

NOT(ISBLANK($ObjectType.Live_Event_Coverage__c.Fields.Live_Event_Allotment_Opportunity__c)), /*allows Live Events to process*/
NOT(ISBLANK($ObjectType.SE_Customer_Solution__c.Fields.Opportunity__c )), /*allows SE Customer Solutions to process*/
NOT(ISBLANK( $ObjectType.Live_Event_Coverage_Timing__c.Fields.CoverageLink__c)), /*allows Live Event Timings to process*/
Hi Team,

I'm reviewing an Apex Batch job that failed overnight. I would like to update the email address that it sends in case of failure. I cannot figure out where this is built, but I've found this code in the Apex Class. There is a function called 'Label.BatchJobMonitors.split(';')' but I cannot find the definition. The 'toAddresses' is build based on that.
Any help?
Thank you
String status = (String.isEmpty(job.Status)) ? '' : job.Status;
          status = status.toLowerCase();
          ApexClass ac = [SELECT Id, Name FROM ApexClass WHERE Id =: job.ApexClassID];
      String className = ac.Name;
          Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
          String[] toAddresses = Label.BatchJobMonitors.split(';');
          mail.setToAddresses(toAddresses);
          mail.setSubject(subject);

 

Dear Team,
we've found the following code of a Case Trigger which emits an error message related to the case owner time zone. I checked the users' time zone both in the SFDC Admin --> Users and also in every single profile in the "My Settings" section. They all have a timezone assigned but for some reason, I believe the bcHelper variable is always NULL and so it triggers the error message.
Where else should I be looking at?

Thank you. 

GC
 

Cannot match case owner's time-zone to
a business hour/holiday record; please update case owner's time-zone in the user profile
 
BusinessHoursUtilities.BusinessHoursHelper bhHelper =
mapBusinessHoursHelpersByUserId.get(c.OwnerId);
if (bhHelper == null) {
c.addError('Cannot match case owner\'s time-zone to
a business hour/holiday record; please update case owner\'s time-zone in
the user profile.');
}

 
Dear Team,
I am creating a email template in VF and I would like to include a link at the bottom. 
The link will ask the customer if the case is resolved or not. Something similar to the bottom of the shot. However, we'd like to ask the customer if the chase is "Resolved" or "not resolved". If the case is "Resolved" is there a way to automatically change the case status to "Need to close" or "Closed" or something which updates a case field.

Thank you.User-added image

Dear All, 
I have a set of records (about 100) of the BCAccount type object. I would need to go through each of them and update the same field with a specific value. 
What's the easiest and fast way to do it having the list of BCAccountId which identify each record?

I was thinking to use Dataloader.

Thank you for your help.

GC

 

Dear All,
I have the following project to develop: when a Case is submitted to us, we have to first-respond it within a certain time (our SLA due date/time). I would like to implement an Apex (trigger or Class?) that fires a notification (an outbound message, or email alert ...) 5 minutes before the SLA due date/time. For example:
a case is created on 05/01/2018 at 8.00AM with priority P1. It must be first responded within 15 minutes that means, at 8.15AM (this is our SLA due date/time). I want to be able to send a notification 5 minutes before we hit the SLA due time. 
The notification (either an outbound message or an email alert) should be sent at 8.10AM, 5 mins before the SLA due date/time: 8.15AM.

I know there are Workflows and time-based action, but would it be more accurate doing in an APEX class? if so? how? 
How can I also repeat the notification many times?

Thank you.
GC

Dear Team,
I need to trigger an APEX Trigger class only to a subset of Cases which oddly my APEX Batch class skipped. 
In my production environment, I have opened the Developer Console window --> Open Execute Anonymous Window and pasted the following code. By calling 'update cc' I will trigger the Case Trigger. However, I get the error in the snapshot.

My questions:
1) How can I run my apex batch class ONLY on the cases that were missed?
2) Is there a way to call the Apex instruction without generating the "Too Many SQL Queries" message?
Thank you.
GC
 
List<case> ccL = [SELECT CreatedDate, Met_SLA_2__c FROM Case WHERE ((CALENDAR_YEAR(CreatedDate) >= 2016) AND (Met_SLA_2__c = null) )];

System.debug('Size List: ' + ccl.size());

for (Case cc: ccL){
    update cc;
}


User-added image


 
I have implemented web-to-case + entitlements / service contracts and an entitlement process.
How can I automatically create and assign an entitlement to a case? I now have to do it manually and only then does it trigger the entitlement process with the relevant processes. In my use case it concerns a case that needs to be picked up after 60 minutes when it is in the queue. I can assign an escalation rule but I would rather work with an entitlement process as you can add other milestones in the process to resolve the case according to SLA settings.