Skip to main content


Quick Tips : Use SFDX Auth token within CURL requests (Mac/ Linux)

I came across a peculiar requirement recently, wherein we needed to download files in a scheduled job. As you all know downloading a file can be a tricky affair with Salesforce.  Fortunately, using REST API we can achieve it. So, the solution became somewhat easier, wherein we could make a CURL call and download the file.  However, all usual cases reference using login name/ password or some reference using the Connected app (OAuth) route. For my specific use case, I already have a machine setup with SFDX and with target orgs authenticated. This solution helps just in that case. With command line scripting it is quite easy (for folks who are experienced with the command line). It took some time for me to get it working. Note: This approach should be chosen after appropriate review/analysis of other approaches, namely, OAuth-based login flows for app authentication. Tools used SFDX - to retrieve auth tokens Curl - to make API calls via the command line  JQ - to parse JSON in the command
Recent posts

Quick Tips: Sort Pipeline by Sales stages with Salesforce Tableau CRM (Einstein Analytics)

Quick Tips: Sort Pipeline by Sales stages with Salesforce CRM Analytics (aka Tableau CRM) Problem Statement While working on a recent change, we realized (a bit late) that the sales pipeline view shows sales stages in incorrect order. Ideally, you would want the pipeline view to reflect the stage in the same sequence as the sales process (for example Prospect, Propose, Negotiate, Close). Sales Path Sales Pipeline Initial SAQL q = load "opportunities" ; q = group q by 'StageName' ; q = foreach q generate 'StageName' as 'StageName' ,      sum ( 'Amount' ) as 'sum_Amount' ; q = order q by 'StageName' asc ; q = limit q 2000 ; Solution Approach Approach 1: Augment a field within the Opportunity dataset (CRM Analytics) to generate a new column for the Sales stage sequence This approach would be faster to deliver and has comparatively less change. However, as sales stages are changed/ updated it can result in the Tableau CRM da

Quick Tip : Stop emails from Sandbox to unwanted domains

Designing a robust automated system is challenging yet profoundly satisfying. I'm sure most can relate, it is bliss to watch the system automatically doing all the work, like clockwork (quite literally). However, there can be some downsides as well. In our example, we wanted to ensure that in no way possible, an email is sent out to external recipients from a sandbox. Of course, the first step would be to mask the required data. However, there's still a possibility that real email addresses can make it into a sandbox. So, we devised a solution to absolutely restrict such emails from a sandbox. The solution is actually quite simple. This solution only targets email sent out manually by users in a sandbox. It does not address emails sent via apex, automation or third party tools Step 1 - Identify the test domain Identify a domain that you want to enable, to be able to send test emails from the sandbox. For example, if you are in XYZ Inc, you most likely want to send test ema

Quick Tips: Queueable Apex : Loose Coupling with Chainable Interface

Queueable Apex : Loose Coupling with Chainable Interface Intro to Queueable Apex Time and again, we come across use cases where we have to either perform an extensive processing, which can breach governor limits, or we want to perform some work asynchronously for improved user experience. Queueable apex provides us a means to create an asynchronous job (An asynchronous job means a piece of work, which is scheduled to run in background, for e.g. you may want to do custom rollup calculations on opportunity save). Queueable apex is similar to future methods, wherein your future method is queued within a server queue. Server picks up the job and executes it, based on resource availability. However, there are some differences, quite notably: Queueable apex returns an ID for further enquiry Queueable apex methods can invoke external API (if Queueable apex class implements Database.AllowsCallouts interface) Queueable apex methods can enqueue other queueable apex jobs Say, we have a simple Qu

Quick Tips: Setup Salesforce developer machine - without ADMIN Access

I presume, a lot of developers may be struggling to use right developer tools for salesforce development. It can be a further problem, if one doesn't have admin access on workstation, as lot of these tools just provide guidelines to install these tools. So this article covers setting up developer machine, without any installation process. In essence, you can setup a fully working Salesforce development environment on your workstation without any admin access. Note: This is logically part 2 of setting up dev machine without admin access. If you haven't gone through my earlier article of setting up SFDX on your workstation, without installation, I would recommend starting with this article Quick Tips: Setup SFDX Manually without Admin access What is Visual Studio Code? Visual studio code is an open source Interactive Development Environment (IDE) for programmers/ developers. It provides various capabilities and features for faster application development and is primari

Tool - Google Play Comments Extractor

I was recently chatting with a childhood friend (rare thanks to COVID19, life is not so fast, for now) . He's a researcher and a Six Sigma expert. He mentioned he was facing a problem wherein he needs to extract google play app reviews. Now, being the programmer at heart (for good and bad), I thought it would be easy to crack. I stumbled upon various techniques and found a better/ faster way to get it done. Hereby sharing my journey. Challenge(s) Retrieve user reviews for google play app store for given app App is related to COVID-19 for India so have almost thousands of reviews being posted every single day. So, in short, large data volume Google play page doesn't make it easy either. Due to nature of minified javascript and dynamic event injection, user experience, it's a much complicated environment for data extraction Paging incorporates both infinity scrolling and button based next page functionality Solutions thought/ tried RPA - (I'm not an RPA expert, not yet)

Salesforce : Quick Tips: Mass Upload Roles

Recently, I was working on a project, wherein the organization was undergoing complete restructuring (merger, re-organization) and added to that re-vamp of CRM to improve Sales operations. As an integral part of data security. There was a need to review and redesign role hierarchy. Long story short, we ended up with a large list of roles (400+). We could have assigned someone to manually create these roles, but due to obvious reasons, I wanted to get this handled via script. I want to share a quick code snippet which can help you generate roles en-masse, without having to put in boring and gruesome hours of manually creating roles. [ Important: This solution will work when you have unique role names] SETUP Create the top level role manually at desired hierarchy level. For e.g. in our sample script, we used "CEO" role to build new hierarchy under CEO role DATA PREPARATION Firstly, as an approach of user onboarding we followed following steps: Created a l