Total Pageviews

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.