5 reasons why Salesforce NonProfit Starter Pack (NPSP) should be first choice for Not for Profits

Sandhya Kaithakkat

The 5 biggest concerns for a Not for profit when deciding to migrate from their legacy system like ThankQ, Raiser Edge, Supporter 360 or excel based tracking are:


Anxiety is understandable for Not for profits as they want to dedicate all their time helping make the world a better place rather than managing IT system. Hence, they need a right system that should let them spend the minimum time on computers managing their data. This is why we recommend they use Nonprofit Starter Pack (NPSP)  because it scores high on all above parameter.

Here's the detailed analysis on the top 5 reasons:

Read More
Topics: Best Practices, Not For Profit, How To, Salesforce

How to update object CRUD permissions on multiple profiles on a single page/view

Jay Sheth

A very common business scenario, whenever we create a new Object in Salesforce, we also required to update the CRUD (Create, Read, Update, Delete) permissions for this new Object in multiple profiles, as this is one of the most important and crucial security requirement.

Another common scenario is when we have to grapple with understanding the as-is configuration for a specific standard or custom Object (or a set of Objects) for an existing org, where we need to get a birds-eye view of CRUD permissions given to all the profiles for these object/s.

This is usually a very time consuming process, particularly when there are many existing profiles in the Salesforce org. We are then having to go to each profile, go to the object CRUD settings for the object/s in question, and set the permissions as needed for each profile.

Most times we wish someone could build a page which would give us a view, and ideally an editable one, for seeing and setting object CRUD permissions for all the profiles at once.

But, there is an easy way out! Many of us are not aware of the very easy point-and-click customization to achieve this requirement.

Here are the simple steps (the snapshots assume a dummy custom object called Certification):

Read More
Topics: Best Practices, Learning, How To, Salesforce

JavaScript: Understanding the unrevealed - Part I

Rajkumar Gaikwad
JavaScript is one of the most confusing/misunderstood programming language, but also it is one of the world’s most popular programming language.
Despite it's popularity, it is such a misunderstood programming language. What’s the secret behind this?
In this blog I am going to be listing the unrevealed parts of this language and I am sure it will help you to understand the language in a better way.

JavaScript has no block level scope

What do you mean by block level scope?

Block level scope means variable declared inside a block of code that is enclosed by curly {} braces and is only visible inside that block not the outside of that block.
If a variable is visible outside that block that means programing language doesn’t support block level scope.
JavaScript has only function level scope that means whenever a particular function gets called it creates the context execution and in that it creates scope chain and variable environment .
We will see what is context execution and the difference between scope level chains and variable environment and what would be the lifetime of a variable in my next post. For now just understand that it allocates new memory locations to all the variable declared in that function and variables are accessible in that function only, which are available in scope chain and variable environment .

                For example,

                 <script>    
                             var testVariable = 1;
        
                              if(true){
                                        var testVariable = 2;
                                        console.log (testVariable);  // logs 2 as output
                               }        
                              console.log (testVariable); // logs 2 as output
                 </script>

NOTE : in ECMAScript 6 we have let keyword which allows to declare variable which has block level scope.
 

It’s a Single threaded event based language

It's a very confusing part for most of us that JavaScript is a single threaded or multi-threaded language.

Single threaded - Only one thing at a time.
Multi-threaded - More than one thing at a time.

JavaScript is a single threaded event based language, so what does event based single threaded language mean?
Everything under the hood in JavaScript is a single threaded but there are some external dependencies which can block the single threaded execution,they are modelled as event. Whatever might block that single threaded execution is queued up for processing (i.e. put into the special queue called EVENT QUEUE).
 

Whenever execution stack is empty JavaScript engine looks into this queue and check is there any event in event queue if yes execute it as in FIFO order.
 
Let’s jump to the example,



 

Flow of execution

Global execution context created --> logs ‘ Hi welcome'  - -> now click on document event gets added into event queue --> waitfor3Secs function gets called --> new execution context created for function waitfor3Secs and added it in on top stack --> after 3 second it logs ‘ wait is finished.. ’ --> popped last execution context --> Logs ‘ Execution finished...!! ’ --> finished global execution context -->execution stack is empty --> will check event queue and process event based on FIFO order by pushing each event on top of the execution stack --> now event handler gets called --> new execution context created for event handler --> logs ‘ welcome ’.

It’s a Dynamic typed language 

What does static typed mean?

In other programming language like C, JAVA if we write a statement like
 
Integer numOfCount = ‘three’;
 
It gives the compile time exception, because compiler is expecting integer typed value in variable.
 
But in JavaScript it internally typecast the variable based on type of its value as:
            
            var numOfCount = ‘three’;
            console.log (typeof numOfCount) // it logs string

 

Coercion in JavaScript

As I said above that JavaScript automatically type cast variable based on its value, because of such coercion some times JavaScript language becoemes a nightmare for developers because it produces unexpected result which weren’t expected by developer.
               
Example:
                                If (1<2<3) {
                                                console.log (‘it’s working as expected’);
                                }
 
                                If (3>2>1) {
                                           console.log (‘working as expected’);
                                } else {
                                                console.log (‘this wasn’t expected’);
                                }          
 
 JavaScript is a truly object-oriented programming language and everything is an object in js.
 Here '<' is an overloaded operator.

In the exapmple execution starts from left to right and first it calls '<' function with 3 and 2 as a parameter.
                 
            function < (param1, parm2) {
                                //…….
             }
 
This function returns TRUE because 3>2.  and next time it pass TRUE<1;             
Because of dynamic nature of js language js engine convert TRUE to 1, so expression becomes 1>1 and it returns false and logs ‘this wasn’t expected’.

Basically all these are the omissions as a part of the language designer, but if we know all these ptifalls then it really save us lots of time in debugging and helps us to understand this language in a better way.
Read More
Topics: Learning, How To, JavaScript, Salesforce

Algorithm to convert 15-digit Salesforce record id to its 18-digit equivalent

Jay Sheth

All of us are aware that Salesforce record id's have 2 forms: 15-digit case sensitive id, and 18-digit case insensitive id. It is most important that we always use 18-digit id for all data manipulations, and not use the 15-digit one.

For facilitating this, Salesforce has already given an out-of-the-box formula function named CaseSafeID(id), which accepts the 15-digit id and returns the 18-digit equivalent.

Read More
Topics: Learning, How To, Salesforce

Retail Execution - The offline imperative

Gaurav Bhagwat

Why offline: The Business Challenge

Field Sales and Marketing Reps travel from store to store. Sometimes these stores are located deep inside shopping centres, at the centre of sprawling malls or in the basements,  where the data connectivity is poor. Even in otherwise well-connected cities or suburbs, there are random blind spots where no data connection can be established at all. Needless to mention the poignant situation in rural areas and country towns. 

Read More
Topics: Retail Execution, FieldKo, Field Sales, Field Maketing, call planning, Field sales process, offline, planograms, call cycles

Respect People! Are we there yet?

Swapna Sangari

Respect at work can bolster abundant positivity at the working environment. They say respectful interactions, build higher and better performances. This forms a foundation for long term work relations and a sense of happiness. A healthy level of respect is probably the most potent ingredient for workplace civility.

Respect reaches much further than manners and compliance. It also plays a key role in recognition, engagement, and in crafting a robust organisational culture.

Read More
Topics: Workplace, Human Resources, Salesforce

Workplace Diversity

Swapna Sangari

Workplace diversity covers gender equality, heterogeneous background, racial and other demographic mixes help nurture business in a very powerful and systemaic way. It does fetch different views, perspectives, ideologies and abilities to handle situations differently. It also brings in freshness, novelty and provides holistic solutions to the problem. These diverse views on "design, develop and market the solutions" draw greater results for business and helps to keep the comfort of status-quo at bay. On the other hand, it is essential to place business needs first, before putting diversity equation, eg. Gold mine in Uzbekistan needs skilled labour than gender diversity.

Read More
Topics: Workplace, Human Resources, Salesforce

How to implement "Dable" in visualforce page

Dattaraj Deshmukh

This article demonstrates the implementation of "Dable" (pronounced 'dabble')  plugin in Visualforce page for pagination, sorting and searching on the client side.

Read More
Topics: Learning, VisualForce, Salesforce

A field trip through lookup junction records editing on master - Part 3

Raghu Nallani Chakravartula
Now that the backend controllers and Apex code blocks are in place (with appropriate test classes, hopefully!), the VF page can be put together simply as an apex:form with a category filter, a table of recommendations data and a section for page navigation.
The save action on the form can be mapped to the extension to save the appropriate recommendations records by querying the changed recommendations cache.
Read More
Topics: Apex Programming, How To, VisualForce, Salesforce

A field trip through lookup junction records editing on master - Part 2

Raghu Nallani Chakravartula

Continuing on from Part 1, where we defined a data structure to hold our recommendation junction objects, this part will focus on the state management required for the UI.  

Read More
Topics: Apex Programming, How To, VisualForce, Salesforce

About this blog

Our team's thoughts and insights on all things salesforce.com

Subscribe to Email Updates

Download User Story template