Total Pageviews

Sunday, April 16, 2017

Lighting - Interview Questions

All my friends working on SFDC or Salesforce are aware that lighting is the latest in-thing. Also those trying to cross to the cloud will be greeted by this catchy word! I will not go into the technicalities of it but would like to list out some of the frequently asked questions on lightning.

Q: What is Lightning?

A: Lightning is the collection of tools and technologies behind a significant upgrade to the Salesforce platform. Lightning includes:
Experience: A set of modern user interfaces optimized for speed. This includes the Lightning Experience, Salesforce1 Mobile app and template-based communities.
Lightning Component Framework: A JavaScript framework and set of standard components that allow you to build reusable components to customize the Lightning Experience, Salesforce1 Mobile app and template-based communities and build your own standalone apps.
Visual Building Tools: Drag-and-drop technologies for fast and easy app building & customizations. Use the Lightning App Builder to customize the Lightning Experience and Salesforce1 Mobile app. Use the Community Builder to customize template-based communities.
Lightning Exchange: A section of the AppExchange where you can find 70+ partner components to jumpstart your development.
Lightning Design System: Style guides and modern enterprise UX best practices to build pixel perfect apps that match the look and feel of the Lightning Experience and Salesforce1 Mobile app.

Q: Is Lightning an MVC framework?
A: Unlike salesforce lightning is a component-based framework.

Q. Which parts of Lightning Components are server-side and which are client-side ?
A: Lightning Components are use JavaScript on the client side and Apex on the server side.

Q: Can I make a Lightning Component that shows up in both the mobile and the desktop user interfaces?
A: You can use Lightning Components directly in Lightning Experience, the Salesforce1 Mobile app, template-based communities, and custom standalone apps. Additionally, you can include Lightning components in a Visualforce page, allowing you to use them in Salesforce Classic, Console, and Visualforce-based communities.

A:Can we make one component inherit styles/CSS from a parent component, or must we always define it in the component ?
Q: Yes, we can inherit styles from parent. there is no need to always defined in the component.

 Q:Can we Include One component to another ?
 A: Yes, we can Include one lightning component to another lightning component

Q: What is Aura? Why do I see the aura: namespace in the code?
A: Aura is the open source technology that powers Lightning Components. The aura: namespace contains all of the basic building blocks for defining components and applications.

Q: Do I need a namespace to develop Lightning Components?
A: No. Lightning Components used to require a namespace, but that is no longer a requirement.

Q: Where can a component be displayed?
A: After you create a component, you will want to display it somewhere. There are a number of possibilities.
Lightning Experience: Display your component in the Lightning Experience using the App Builder. You can edit the home page, edit a record detail page or create/edit a new app page to include it. Alternatively, you can create a custom Lightning tab that references your component and add that tab to your Lightning navigation.
Salesforce1 Mobile app: Display your component in the Salesforce1 Mobile app by creating a custom Lightning tab that references it and adding that tab in your mobile navigation.
Template-based community: Display your component in your template-based (e.g. Napili) community using the Community Builder.
Standalone Lightning app: Create a standalone Lightning app (e.g. and include your component in this app. Access your Lightning app by URL.

Q: Do I always create an app bundle first?
A: Not necessarily, you can start with a Component bundle.

Q:Where Lightning components can be displayed ?
Ans :
In Lightning App (.app URL)
In Salesforce1 app as a Tab
As a lightning extension

Q: Is there any limit on how many component to have in one Application ?
 A: There is no limit.

Q: What is difference between Visualforce Components and Lightning Components ?
A: Visualforce components are page-centric and most of the work is done on the server. Lightning is designed from the component up, rather than having the concept of a page as its fundamental unit. Lightning Components are client-side centric, which makes them more dynamic and mobile friendly.

Q:Can we include external JavaScript/CSS libraries in components ?
A:Yes ! we can use multiple libraries in our lightning component like JQuery, Bootstrap, custom CSS and custom Javascript libraries from a local resource (static resource).

Sunday, July 17, 2016

How to set up Free Trials and Discounts in Zuora!

It happens to every business now and then with the sales numbers - they may not be as optimistic as you would have predicted them or hoped them to be? So you might have launched a new product and are seeing a sluggish adoption by users- how to accelerate user acceptance ?

Discounts are a great way of bringing the consumer back to buying ways and opening the strings of their purse.

Similarly a free trial might go a long way in pursuing the users to try your newly launched product line.
So far so good but how does one setup these constructs :-
1. Discounts
2. Free Trials
in your respective tools - say Zuora -your  Relationship Business Management (RBM) solution which helps enable businesses in any industry to launch or shift products to subscription.

All those who are familiar with Zuora will know that everything revolves around- your Product Catalog ( your product repository in Zuora). Product Catalog is where :-
1. You record / capture your products.
2. Define different Rate Plan for each product.
3. Define various charges and discounts for each rate plan.

Zuora's product catalog provides two discount charge models - Discount-Fixed Amount and Discount-Percentage - which can be used to offer your customers a variety of discount options:
Lets say you launched an online technical magazine called "Tech-Mate" and find  that user adoption is a challenge and say you would like to use the following plan to give a boost to your sales  :-
1. 50% discount for the first 3 months subscription
2. 200 Rupees discount on renewal.

So will go to Product Catalog and Add the Product- "Tech-Mate"
For the above product you need to do the following:-
1. Create the following Rate Plans
Normal Subscription:
 a. Monthly charge of Rs. 500
Promotional Subscription
 a. Monthly charge of Rs. 500
 b. Percentage Discount of 50% for 3 months
Renewal Subscription
 a. Monthly charge of Rs. 500
 b.Fixed Amount Discount of 200 Rupees
How to use them?
When a customer signs up for "Tech-Mate" while creating subscription:-
1. Select the product "Tech-Mate" say initial term of 6 months
2. Select from Rate Plan drop-down - Promotional Subscription
3. Once the customer comes for renewal - create an amendment for:-
    a. Remove the Rate Plan -Promotional Subscription  (Type
    b. Add the Rate Plan - Renewal Subscription
    c. Renew the subscription using another Amendment

Free Trials

 Sometimes it takes more than a discount to make prospective customers try your new product. Free trials come in handy in such situations.
How to handle free trials in Zuora.
I will suggest 2 ways to handle it.

1. Using the Subscription billing trigger dates for providing free trial.
    The billing trigger dates are (You need to control how many are active via settings)
    a. Contract Effective Date (Contract is signed)
    b. Service Activation Date ( Service is made available)
    c. Service Acceptance Date (Customer accepts service)

Now say you want to provide a free trial of 15 days.
You can set the Contract Effective date to say 18th July 2016 but set the Service Activation date to 2nd August 2016.

2. Using Discount Model
In case you want to give free trial of 1 month to your Product -"Tech-Mate"
In that case create another Rate Plan say
Free Trial Subscription
 a. Monthly charge of Rs. 500
 b. Percentage Discount of 100% for 1 months

Zuora has all the features to support the adage - Customer is the king - so use them to increase your sales !!

Sunday, June 19, 2016

Customer Accounts in Zuora and how they are different from their SFDC counterparts!

Of late I have been dabbling again with zuora after initial stint couple of years back. It's been ages since I blogged (at least it seems so). Customer accounts are theoretically / functionally similar to Account object in Salesforce.
Or more appropriately in salesforce  "companies that we sold to are Business Accounts".
In salesforce Account Object holds all the critical information like:-
1. Address details
2. Number of employees
3. People associates with that Account as related records like contacts
4. Business done with then as related Opportunities
5. Documents associated with them as attachments
and so forth.....

Similarly in Zuora
 An customer account is a account that collects all of the critical information about the customer, such as contact information, payment terms, and payment methods.
Zuora uses the Account object to track all subscriptions, usage, and transactions for each customer account. Each account is a source of a recurring invoice stream.

Every subscription must be associated with an account. At least one active account must exist before any subscriptions can be created.

You would frown and say well so other than the subscription part where is the difference?
The difference lies in the details of schema or in how zuora works:-

1. Both Salesforce and zuora provide capability to add custom fields

1.The fields that can be added in zuora are of type text, picklist and checkbox only while salesforce provides you an array of options.
2. You cannot create any lookup / master detail based custom field in zuora or as they call it they dont provide "Relationship" fields in zuora
So what happens when you might want to associate an account with another account say as a :-
1. Lead Manager
2. Consultant
3. Decision Maker

Well as of now the most easiest way of such association is using:-
1. Some sort of account hierarchy
2. A custom picklist field to denote type of account.

You might wonder why not provide something as basic as a lookup or relationship field- the answer might lie in the may Zuora works - it synchronizes data back and forth between itself and salesforce hence any modification of relationship schema might make their sync all the more complex.

But if you think a strong case of advocating "Relationship" fields at the "Customer Account" zuora like salesforce has a vibrant community and idea floating platform, you can post your idea and up-vote it here - Zuora Ideas

Watch this space for more in future!!

Tuesday, September 29, 2015

What is Apttus?

If you google "What is Apttus"?
The first result you get says:-

Apttus is one of the fastest growing Silicon Valley technology companies. Apttus provides Cloud Computing solutions that encompass Quote-to-Cash and Procure-to-Pay solutions to the Global 500 and mid-market marketplace. Apttus is's leading native Salesforce1 application partner.

Though its good to know about background of Apttus , we the developers are more interested in the solutions/products provided by Apttus.
The major solution catered by Apttus is the comprehensive solution for :-
  Quote - to- Cash

Going by the online documentation provided by Apttus  its - The only choice to intelligently configure, price and quote new deals, add-on sales and renewals – all inside Salesforce.

So far so good, but you as a developer are inquisitive to know more about this product . What are challenges which one will encounter while suggesting it as a solution? What are the user cases which are deemed fit to adopt Apttus (QTC) as a solution?
What is the Quote -to-Cash journey?
It is essentially all the activities right from:-
a. cold calling / hot calling
b. lead management / opportunity management
c. suggesting products and services to the prospective customers
d. getting all approvals for the solution/ product combination suggested
e. generating contracts, doing the redlining of the contract, maintaining version of different contracts
f. renewals / amendments / termination , etc.

For clarity please refer to the diagram below:-

Apttus provides a suite of solutions which is 100% native to salesforce for automating the full quote to cash journey.
If most of the "Pre-Sales processes" and "Sales Processes" are carried out in salesforce you can consider using Apttus for CPQ and Contract management.
One needs to install the requisite "Managed Packages" provided by Apttus to have the solution up and running in your salesforce orgs.
The main packages which you might need to install are shown in the diagram below:-

I will talk about the basic features provided by them in a follow-up blog.
Functionally Apttus solution can be compartmentalized into the following divisions:-

We will cover each of these segments in days to come, keep watching this space for more.

Saturday, September 26, 2015

Why is Apttus stealing the march over Zuora?

Salesforce is a vibrant platform which caters to most of the housekeeping activities of any standard business.
Those activities/ processes may be :-
  • Pre Sales / Marketing
  •  Sales
  •  After Sales Service / Support
  •  Knowledge Base Management
  •  Website for popularizing products or taking information about product & services to potential clients

Having said that one realizes that there is no OOB (Out of Box) CPQ module or Configure - Price - Quote Module in salesforce.

What is CPQ?
CPQ, or Configure Price Quote Software is a sales tool or a set of tools designed to help companies produce accurate and highly configured quotes making all of the complex product, pricing, and business rules centralized, automatic and available in real-time, so that sales has all the information they need while making sales handy.
Since Salesforce doesn’t provide a module / tools dedicated for CPQ, what are the options. Some of the options are:-
1.  One can build a CPQ solution using some custom objects and other customization ( which no wonder is a cumbersome process)
2.   The other option is to leverage the existing CPQ solutions.
       i.  Some are on premise systems hence perhaps not the best choice
       ii.  Others are on the cloud but integration between the different cloud ecosystems is sometimes not that easy. Remember why salesforce is such a hit because of the ease with which one can learn the platform nitty-gritties and develop solution. Unfortunately many of the earlier cloud based CPQ solution have very cumbersome API based integrations, which at times might not be so easy to grasp.
In the IInd category let’s take the example of Zuora which is a cloud based CPQ solution (among other solutions like billing engine) and an ideal candidate for adoption in the cloud eco-system.
So what is Zuora?
Zuora for Salesforce lets one sell and nurture subscriptions without breaking one’s sales and customer care processes.
Zuora for Salesforce provides two native applications:
·         Quotes to enable direct assisted sales of your subscription offerings
·          360 Sync to provide full visibility in Salesforce into key Subscriber activity and into opportunities that exist to foster deeper subscriber relationships
Despite being fully on cloud one gets a sense that implementing Zuora at times poses some challenges.
i.                     The API at times is not very well documented for a new developer to implement, also unlike salesforce the training resources are not freely available.
ii.                   Also one should be a partner to get a Zuora org/ instance; hence one cannot easily play around with it.
iii.                  The fact that Accounts and some other associated data reside both in salesforce and Zuora give a semblance of data duplication though the 360 sync ensures that both the copies always reflect the same information.
iv.                 The fact that despite both environments being on cloud the fact that the cloud are different and need some kind of hand-shake for the information to flow also brings in some complexity thus impeding adoption.

As per online Apttus resources- Apttus Configure Price Quote (CPQ) is the choice for Salesforce to intelligently configure price and quote new deals, add-on sales and renewals — all inside Salesforce.
The following screenshot further clarifies what Apttus stands for.

In simple words Apttus is a product built on platform or one can say that its native to salesforce.  Now what does it imply , it means objects like Accounts, contacts , quote won’t be duplicated or in other words in Salesforce and Apttus CPQ there will be only one instance of such objects unlike Zuora.

The Native VS Composite App debate

 Hence despite sharing some of the similar difficulties with Zuora ( from a developer/ implementer point of view) like:-
1. Documentation / Resources not freely available like salesforce.
2. The product cannot be tried by developers in general unless one is a partner 
APTTUS is having fairly good adoption rate in the Salesforce –CPQ space due to being native to salesforce.

Monday, July 6, 2015

Integration Design patterns in Salesforce

Has this been your reaction when trying to navigate your path around design patterns especially when it involves patterns governing integration !! Well to be  honest technical jargon always gets to my nerves , but after the initial jerky reaction I always take it upon me to demystify / simplify it.

So what are "Design Patterns"? 
As per Wikipedia -   design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. 

In layman's language - its a solution approach one should adopt for a certain category of recurring problem statement. For example one has to come up with a "Contingency plan for a natural disaster" what would be the main steps to formulate a strategy?
1. Evaluate the vulnerability of the area under inspection
2. Find the steps to reduce damage and vulnerability
                  3. What would be the precaution each can take.
                  4. Have an advance warning system if possible.
                  5. Formulate a relief and rescue strategy

So be it a earthquake/ floods or any other natural calamity the basic steps will follow above pattern.

What are the main types of design patterns?

  • Algorithm strategy patterns
  • Computational design patterns
  • Execution patterns 
  • Implementation strategy patterns
Another school of thought goes by the following classification:-
  • Creational Design Pattern
  • Structural Design Pattern
  • Behavioral Design Pattern 

 Lets leave the general design pattern and dive into design patterns associated with SFDC Integration.

Broadly all integration design pattern are classified into:-
1. Data - These service the need for taking or synchronizing data from one system to another. Mostly the purpose of these integration is to see that both system have meaningful data. These type of integration are supposed to be the simplest.
2. Process - Here the two different system target and source communicate to service a business process related requirement.These might require complex design and implementation and involve multiple systems, where the one invoking the other systems may be the controller while other act like members of an orchestra .

There are certain things which need to be considered while embarking over a type of design pattern. the main considerations are:-

1. Source / Target systems

2.Type of integration (Data/ Process)

3.. Timing (Synchronous/ Asynchronous)

We would deep dive on those aspects in a followup blog.

Sunday, March 22, 2015

Non-selective query against large object type (Issue)

In life many times simple things pose to be more nagging. Thinking of it why would salesforce be any different? In a age of "Lighting" , "Heroku" and "Mobility" there are minor things on the salesforce platform which might test our nerves. One such trifling issue is getting errors of non-selective query against large objects . We keep raking our heads why it keeps coming (as our memory is not always reliable that we had encountered it earlier too).

Error encountered : System.QueryException: Non-selective query against large object type (more than 100000 rows).
Lets ponder on this a bit!

What is a selective Query as against non-selective query?
A query is selective when one of the query filters is on an indexed field and the query filter reduces the resulting number of rows below a system-defined threshold. The performance of the SOQL query improves when two or more filters used in the WHERE clause meet the mentioned conditions.
What is Large Object Type?
Object having records in excess of 99999

  • Consider an indexed filter
  • Contact about custom indexing.
One will need indexes for all of the fields one is using if SOQL . This means that fields in filter must all be marked as External ID or have custom indexes created.

Failing that, one may want to use SOSL, because the search indexer (not to be confused with a database index) will include all of the filter fields in the search.