Skip to main content

Posts

Understanding the Internet Revolution

Man is a social animal, this was the first lie they ever told you in your history classes. If we look at the human history going back through the dark ages, we understand that man is anything but a social animal. The agriculture revolution gave control of food in everyone hand and we started building societies, bringing people socially together. But when societies formed it brought all sorts of people together and caused all sorts of conflicts between them. Somewhere in the middle ages, few smart people realized this and decided to kick start a religious revolution. They established common guidelines for communities to work cohesively without stepping on each others foot. But they could not achieve this without control of information. With control comes fear and with fear comes faith. They established Churches, Mosques and Temples and controlled the information to reach heaven. But the voices of dissident did not merge, not easily, they just were suppressed. A few kings got o...

Leaving a Learning Trail

One of the most worrying aspect of an client engagement is what comes after the successful deployment. In one of my previous role, I was asked out of the blue without any prior warning to deploy a large chain-set containing 19 objects, some close to 380 fields, with 9 interlinked-relationships. Along with that I was to cleanse the data from legacy systems that amounted to 6 digits of records. And all this without a proper plan (I was the one who was supposed to come up with a plan for this) and two days prior to my extended vacation for Diwali. And that too when my mom had promised to make my favourite sweets. But even on that day, when I prepared the plan on the 14 hour train journey from Delhi to Pune and then successfully deploying the whole package after relishing on the sweets, I was not as worried as I always am when I am told to do a Train the Trainers session at the clients office. It is always good to have a train the trainers session and a good company understands that...

Code-pattern for Creating Mind-blowing Tabular Reports on Visualforce (With Sample code)

Salesforce.com has a mind-blowing reporting structure but it limits on data that is available on the system. Can we report on Data that is not present in the system? For e.g., in a time-sheet management system, can we identify the people who have not filled time-sheets for a particular day? Can we report on data that is not present in the system? Can we identify records that are not created? There is one thing I have learned working on Force.com platform for last 7 years, there is No No answer in Salesforce. Think a little bit and the answer will reach you. It is somewhat like climbing mount Everest, can you do it? Sure yes, in how many days depends on how fit I am (or how crazy I am) Ok that Everest thing came up because someone did ask me that a few weeks back, moving on. Someone did also ask me about creating a report on missing details and I gave it a thought. The short answer is Yes we can, the long answer is we write a Visualforce page, anyone can tell you that. But what I r...

Hands on for Salesforce Lighting Connect (External Objects)

Salesforce External Objects is a new tool that has caught my attention in recent times. Those who spend their day listening to words like REST, SOAP, Integration etc. the following information for you. Salesforce External Objects is nothing but the out-of-box implementation of ODATA architecture. ODATA is a open-source data transfer standard backed up by the Empire Microsoft (they are good guys now). Instead of an architecture of sending messages back and forth using HTTP like REST, ODATA focuses on the content of the message over HTTP. ODATA can also be compared with ATOMPUB format (RSS feed format). However ODATA is useful in sending tabular or data over HTTP, that example can also be sorted, searched, filtered and other URI conventions. In this second post on Lighting series I am going to delve deep into how Lighting Connect lets you access external data right into Salesforce. If you were living under the rock or in some place with no internet connect, here is the summary...

The Monk who sold his Computer for the Cloud

The first computer I ever saw in my life was a desktop that my father gifted to me during my second year of computer engineering. The specifications were a 1 GB of RAM, 40 GB HDD, a modest LG monitor, an Intel P5 Dual Core processor and an Inverter (this came separately and since we were in India, a battery inverter was necessary). The installation was so space consuming that we had to invest in a computer table (no other place could accommodate this machine) that had options of keeping CPU and inverter and Printer under the table, a foldable keyboard and mouse holder and a monitor. This was ten years ago and by the standards back then, my father had purchased the best computer in town. My father is a perfectionist, and hence he insisted on building a shelf/ library over the table that would complete the look of a decent computer workstation. This was the computer that accompanied me during my engineering days. The endless hours spend over playing with MS Paint, writing hacks in...

Everything you wanted to know about Salesforce Lighting Connect (External Objects)

The world runs of Data. Having correct data can determine if your business succeeds or fails. Since the emergence of Cloud Computing, Data escaped its normal prison of sitting on servers and became relevant. But the most important aspect about cloud was data was not interchangeable. I.e., It escaped the prison but was trapped in a zoo. In a large organisation if there was a need for using more than one system to manage data, it became a development nightmare. Not to mention maintaining multiple connections and data consistency between two systems, middle-wares (if any) and still keeping it under the governor limits. Salesforce Lighting connect lets you overcome this limitation by using the (soon to be) global standard OData protocol. With external objects you can connect to an external data source like SAP or any other database that uses OData protocol or a simple URL. What this means is you can have orders in SAP and customer Data in Salesforce. Both will be connected togethe...

Have you met the Ghost Records of Salesforce?

This post is very old but it is long overdue. Have you seen the Ghost records in Salesforce? Whenever there is an auto-number field on an Object, it suddenly seems to have gaps in between? For e.g., if you have a auto-number set at 00001 and the next record it creates is 00004. These gaps are sometimes attributed to people who create records and delete. Auto-number fields Lets talk a bit about auto-number. Apart from the part that they are cool, they are also very stubborn. An auto-number field resets only once in its lifetime and never turns back. When an auto-number is incremented it does not go back, even if the record is deleted. So when you delete a record that has auto-number field on it, it will not decrement it by 1 but instead create the gap. Ghost records The real crux of the issue lies when developers write unit classes. Developers always create dummy records for testing. The test execution runs in a separate context than the main Salesforce. These records are not s...