Pages

Friday, December 17, 2021

Salesforce: Retrieve Report Metadata

Here is the use case, you are presented with a report with duplicate fields label, whether from the same object or different objects, but how can you easily identify each field? See a sample from the below screenshot, there is no way to tell which Created By and Created Name are from which object.


Even by editing the report, it will not tell you, of course, you can remove and add the fields back, but you are supposed not to change the report.


The answer is to check the metadata of that report, unfortunately, Salesforce does not offer to get this without using tools, such as VS Code or other IDE. But, we can use Workbench to retrieve it.

You can follow this blog to prepare the package.xml file, and retrieve the metadata using Workbench.

1. Get the "fullName"


The report should not be stored in the Private Reports folder, otherwise, you will not see the report here.

2. Prepare XML file

Copy the following XML and save it as a file called "package.xml"

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>Johan_Change/Opty_and_Acct</members>
        <members>A_folder/Opportunity_by_Stage</members>    
        <name>Report</name>
    </types>
    <version>53.0</version>
</Package>

If you would like to retrieve metadata from multiple reports, you can add them to the XML file.

What is this mean <members>Johan_Change/Opty_and_Acct</members>

Text in red is the report folder API name, you can get the report folder API name from Folder Unique Name from rename folder. While the blue text is the report API name, you can get the report API name from the Report Unique Name in the report properties.

If the folder is Public Reports, use unfiled$public as the report API folder name in the Package.XML file, also you will not see that folder in Workbench step (1).


3. Retrieve Package

Open workbench:
  • select migration | Retrieve
  • select the XML file prepared in step 2
  • select "Single Package"
  • click the Next button then click the Retrieve button
  • when done, click the "Download ZIP File" link
  • extract the zip file and looks for the report
  • open the file with any text editor

<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://soap.sforce.com/2006/04/metadata">
    <columns>
        <field>Opportunity$Name</field>
    </columns>
    <columns>
        <field>Opportunity$Account</field>
    </columns>
    <columns>
        <field>Opportunity$CreatedBy</field>
    </columns>
    <columns>
        <field>Opportunity$CreatedDate</field>
    </columns>
    <columns>
        <field>Opportunity$Account.CreatedBy</field>
    </columns>
    <columns>
        <field>Opportunity$Account.CreatedDate</field>
    </columns>
    <currency>EUR</currency>
    <format>Tabular</format>
    <name>Opty and Acct</name>
    </params>
    <reportType>Opty_and_Account__c</reportType>
    <roleHierarchyFilter>CEO</roleHierarchyFilter>
    <scope>organization</scope>
    <showDetails>true</showDetails>
    <showGrandTotal>true</showGrandTotal>
    <showSubTotals>true</showSubTotals>
    <timeFrameFilter>
        <dateColumn>Opportunity$CloseDate</dateColumn>
        <interval>INTERVAL_CUSTOM</interval>
    </timeFrameFilter>
</Report>

The report metadata tell us that the 1st and 2nd field are from Opportunity, while the 3rd and 4th fields are from Account.

Here is the list of Metadata Type supported by Metadata API: https://developer.salesforce.com/docs/metadata-coverage

Some metadata types support using wildcard character (*), so you can retrieve all items without the need to mention each member name: https://developer.salesforce.com/docs/atlas.en-us.208.0.api_meta.meta/api_meta/meta_types_list.htm 

As you see from the above URL, Report and ListView are No, but Profile and PermissionSet are Yes.
Sample XML file:

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>PermissionSet</name>
    </types>
    <types>
        <members>*</members>
<name>Profile</name>
    </types>
    <version>53.0</version>
</Package>


Monday, December 13, 2021

Salesforce - Teams integration

Salesforce apps in Microsoft Teams allow you to searchmention, and preview Salesforce records in Teams chats between users, and Teams channel. Any Salesforce records, from Account, Contact, Opportunity, Case, Lead, etc. can be used for mention in chat and can be added as a tab.

Adding Salesforce records as tabs in the Teams allow you to:

  • View and edit record details
  • Access Chatter activities, including creating new posts
  • Access Activity histories related to the record
  • View the related records and open in Salesforce
  • Optionally, you can rename the tab name in Teams


Benefits

  • Convenient Data Sharing, you can share Salesforce records in your Teams channels and chats easily with the Salesforce Teams Integration. This enables you to start a conversation on any record. The members of your Teams channel who have the access to Salesforce can conveniently work and access Salesforce records without leaving Teams.

  • Convenient Data Access, the Salesforce - Teams integration enables your Teams users to interact with Salesforce records not only through conversations but also via channel tabs. Adding a Salesforce record as a tab allows users in the Teams can easily view details, related lists, activity timeline, and Chatter right in the Teams tab.

  • Salesforce Records Preview, if someone mentions a Salesforce record in a Teams conversation, the other users can easily preview the record without leaving Teams. As a result, users can save their time and avoid juggling between Microsoft Teams and Salesforce.

  • Editing Salesforce Records, don’t waste your time and do not jump from Microsoft Teams to Salesforce. You can edit the record details without changing your work environment to avoid the loss of any important updates.

Enable in Salesforce  

1. Go to setup menu and search for Teams Integration, then enable it. You may need to reach out to your AE to enable this feature.



2. Assign permission set called "Use Teams Integration" to users that need to access Salesforce data from Teams.

Adding the Salesforce app in Teams

1. Open Teams, click the Apps icon at the bottom left (1), type Salesforce in Apps search box (2), and click Salesforce icon (3) to install


2. Next, click Add button (4)


3. From the login page, enter your Salesforce username and password.

4. Done, now you should see the Salesforce icon when a chat with someone, or in a team channel.


Search, mention, and preview Salesforce record in Chat

1. Open a chat window with someone and click the Salesforce icon

2. Search for a record, the system will show the recent records that you access in SFDC

3. Select the record and click the Mention Record button

4. Type your message in the chat window then hit the “enter” key or Send icon


5. If the receivers have the Salesforce license and Salesforce app installed in Microsoft Teams, the users will be able to Preview the record sent, click “View in Salesforce” to open the record in Salesforce.com

6. The same action can be performed in the Teams channel under Posts, click “New conversation” button, and you will see the same set of icons as above screenshot


Adding Salesforce record as a tab

1. From a Chat or Teams channel, click + icon on the top 


2. Click the Salesforce icon, if you do not see the Salesforce icon, type Salesforce in the search box at the upper right corner


3. Search for a record, the system will show the recent records that you access in Salesforce

4. Select the record and click the Save button

5. Click the arrow next to the new tab added, you can rename or remove the tab added

6. The selected record added as a tab in a Chat or Teams Channel


7. You will be able to edit the record, do Chatter posts, view Activity, see the Related records, click the link to open the related record Salesforce.com



Reference:

Page-level ad