How to Get Record Type Name in Process Builder
Salesforce has finally provided us with a way to easily get Record Type Id by Developer Name, without using a SOQL query. This new feature comes with Summer '18 Release and it should help us write more efficient and reliable code.
The old approach
Let's imagine that we have a Record Type on Account object called          "Wholesale Partner". We would like to obtain the Id of this Record Type in order to assign it to the          RecordTypeId          field on the Account record during the insert operation.
Previously, there were a couple of options to obtain a Record Type Id in order to assign it to a record, but none of them were really optimal. One approach was to use the          Record Type Name          in order to obtain a Record Type Id in the following way by using the          getRecordTypeInfosByName()          method of the          DescribeSObjectResult          class:
                          Id              recordTypeId              =              Schema              .              SObjectType              .              Account              .              getRecordTypeInfosByName              ()              .              get              (              '              Wholesale              Partner              '              ).              getRecordTypeId              ();                              The issue here is that the Record Type Name is nothing but a label, which can be easily changed by an administrator in Production, thus breaking your code without any warning. The second issue with this approach is that the logic might break in multi-language environments in case somebody translates the label. However, as far as I know, this was the only approach to obtain a Record Type Id without issuing a SOQL query.
This brings us to the second approach that uses the RecordType object. You can execute a SOQL query against this object to get the Record Type Id by Developer Name, which is much more stable than the label, it isn't affected by translations, and cannot be changed that easily.
                          Id              recordTypeId              =              [              SELECT              Id              FROM              RecordType              WHERE              DeveloperName              =              '              Wholesale_Partner              '              AND              sObjectType              =              '              Account              '              ].              Id              ;                              Although this approach is more reliable than the first, my issue with it is that it requires a SOQL query. In an environment that limits you to 100 SOQL queries per transaction, every one of them counts.
The new approach
With          Summer '18 Release          we now finally have a way to use the          Developer Name          to obtain a Record Type Id without issuing a SOQL query. This is achieved by using the new          getRecordTypeInfosByDeveloperName()          method of the          DescribeSObjectResult          class:
                          Id              recordTypeId              =              Schema              .              SObjectType              .              Account              .              getRecordTypeInfosByDeveloperName              ()              .              get              (              '              Wholesale_Partner              '              ).              getRecordTypeId              ();                              In my opinion, this should be a new standard for this kind of tasks, it's both reliable and cheap on the resources. If you are really concerned with resources that your logic requires to get Ids of different Record Types during execution, you should consider caching the          Map<String, Schema.RecordTypeInfo>          returned by the          getRecordTypeInfosByDeveloperName()          method. If you are interested you can check out this answer on StackExchange with analysis on the resource consumption by different Apex Describe calls.
In case you want to use the above sample in your code, you should replace the          Account          with the object that has your Record Type, and the          Wholesale_Partner          with the actual          Developer Name          of the Record Type that you need.
Appendix: How to assign a Record Type Id to a Record
So now that you have a Record Type Id, you can assign it to a specific record by using the          RecordTypeId          field. Here's an example for Account:
                          Account              acc              =              new              Account              (              Name              =              '              Test              Account              '              ,              RecordTypeId              =              recordTypeId              );                              or through a property like this:
                          acc              .              RecordTypeId              =              recordTypeId              ;                              How to Get Record Type Name in Process Builder
Source: http://smukov.github.io/blog/2018/06/09/Record-Type-Id-By-Developer-Name/
0 Response to "How to Get Record Type Name in Process Builder"
Post a Comment