Here, I am displaying
salesforce lightning modal with a progress indicator in footer using lightning component.
In this article, you will be able to open modal on click button and close the modal and add progress indicator in a footer.
Let’s start process step by steps:
Step 1: Create lightning component “ProgressIndicator.cmp” and use below code.
<aura:component >
<aura:attribute name="showpage1" type="boolean" default="true"/>
<aura:attribute name="showpage2" type="boolean" default="false"/>
<aura:attribute name="showpage3" type="boolean" default="false"/>
<aura:attribute name="openModal" type="boolean" default="false"/>
<aura:attribute name="currentstep" type="String" default="step1"/>
<lightning:button variant="brand" label="Open" onclick="{!c.openModal}" />
<aura:if isTrue="{!v.openModal}">
<div class="demo-only" style="height: 640px;">
<section role="dialog" tabindex="-1" aria-labelledby="modal-heading-01" aria-modal="true" aria-describedby="modal-content-id-1" class="slds-modal slds-slide-up-open">
<div class="slds-modal__container">
<header class="slds-modal__header">
<button class="slds-button slds-button_icon slds-modal__close slds-button_icon-inverse" title="Close" onclick="{!c.hideModal}">
<lightning:icon iconName="utility:close" size="small" alternativeText="Close"/>
</button>
<h2 id="modal-heading-01" class="slds-text-heading_medium slds-hyphenate">Modal Header</h2>
</header>
<div class="slds-modal__content slds-p-around_medium" id="modal-content-id-1">
<aura:if isTrue="{!v.showpage1}">
<p>Step 1</p>
</aura:if>
<aura:if isTrue="{!v.showpage2}">
<p>Step 2</p>
</aura:if>
<aura:if isTrue="{!v.showpage3}">
<p>Step 3</p>
</aura:if>
</div>
<footer class="slds-modal__footer slds-modal__footer_directional">
<lightning:progressIndicator currentStep="{!v.currentstep}">
<lightning:progressStep label="Step 1" value="step1" onclick="{!c.page1}"/>
<lightning:progressStep label="Step 2" value="step2" onclick="{!c.page2}"/>
<lightning:progressStep label="Step 3" value="step3" onclick="{!c.page3}"/>
</lightning:progressIndicator>
</footer>
</div>
</section>
<div class="slds-backdrop slds-backdrop_open"></div>
</div>
</aura:if>
</aura:component>
Step 2: Create lightning component controller “ProgressIndicatorController.js” and use this code.
({
openModal : function(component, event, helper) {
component.set("v.openModal",true);
},
page1 : function(component, event, helper) {
component.set("v.showpage1",true);
component.set("v.showpage2",false);
component.set("v.showpage3",false);
component.set("v.currentstep","step1");
},
page2 : function(component, event, helper) {
component.set("v.showpage2",true);
component.set("v.showpage1",false);
component.set("v.showpage3",false);
component.set("v.currentstep","step2");
},
page3 : function(component, event, helper) {
component.set("v.currentstep","step3");
component.set("v.showpage3",true);
component.set("v.showpage2",false);
component.set("v.showpage1",false);
},
hideModal: function(component, event, helper) {
component.set("v.openModal",false);
}
})
Step 3: Create lighting app for preview the components.
<aura:application extends="force:slds" >
<c:ProgressIndicator/>
</aura:application>
You can check – Salesforce consulting Services – Girikon Salesforce implementation partner & Services
For any sized business, one should have a robust and efficient CRM (Customer Relationship Management) software solution to increase the productiveness and revenue of your organization.
Now the question comes to one’s mind is which CRM to choose for your business? Selecting an ideal CRM is utmost crucial for your business as with the help of this tool you will manage your leads, customer services, sales, etc.
According to the Gartner Report, the Customer Relationship Management Software Market Grew 12.3 % which means people all around the world are relying on CRM for managing their business.
There are abundant of CRMs available to serve your business needs but one should be careful while selecting the right CRM for your business.
Before proceeding towards an ideal CRM, let us understand few important parameters which you should check before selecting a CRM.
Available for any (small/mid/large/) scale business or Non-Profit Organization.
Pricing
Features like lead to opportunity management, Reporting Management, Customer Service Management.
Automation of the CRM as per the need for Workflows, Approval, Flows, Triggers, etc.
Report Generation, Sales forecast, etc.
Integration with Social Media Platform, Email Marketing Platform.
Ability to implement a new feature on CRM by installing 3rd party tool or by customization.
Overall security of data.
Compatibility with all devices and available as an app for the mobile user.
As per the recent article “Best CRM Software 2018”, it is understood that Salesforce.com’s Customer Relationship Management (CRM) service is the best CRM for your business and it matches with the above mentioned parameters as well.
In this article, I will be explaining to you why you need Salesforce Services for your business and how it will help you in the long run.
Talking about the Salesforce CRM, it helps in the lead to opportunity management, getting reports by taking various parameters into consideration. If you need any particular feature in your CRM which can enhance the process, then you can also install a third-party app from the AppExchange.
You can also take help from Salesforce Consultants who can assist you in guiding and developing a complex solution in Force App Cloud.com. These solutions make your CRM even powerful.
Salesforce also offers Community Cloud with the help of which you can connect and collaborate with your clients, vendors, employees to form communities. You can handle articles, FAQs for your portal easily and your customer can find the solution to the general problems on your portal itself.
Your customers can also create cases from your portal (community) and that case can be assigned to the agents or the case can be escalated based on the workflow. With the help of Community Cloud, you can offer the best customer support services to your customers and boost up your sales.
Next we have Salesforce Marketing Cloud, with the help of which you can manage various email campaigns, Social Media Marketing, Advertising, B2B Marketing Automation for lead generation, product promotion on various social media platforms, and much more. You can shoot emails for different purposes and track their report.
It is always beneficial to have some forecast, logical recommendations with an explanation, about your business so that you can avoid taking the wrong decision which can affect your sales figure. Einstein Analytics does the same for your business by prediction. It analyses the data in the system and then gives you the recommendation for your business.
Now we have come to the end of this article, I hope this will help enlighten you about the Salesforce Services and how it can benefit your business.
In case you need help in any of the above Salesforce Consulting Services, then you can surely contact us. We are a Salesforce Consulting Partner and offering out-of-the-box solutions.
I am going to show to create custom multiselect component using
salesforce lightning design system static HTML.
Here I am retrieving data from custom object in list and populate in options and making options multiselect.
Follow the below process step by step then you will be able to create multiselect picklist: –
Step 1: Create lightning component “MultiSelectComponent.cmp” and use below code.
<aura:component controller="ExpenseOptionsCtr">
<aura:attribute name="lstExpenseData" type="Expense__c[]" />
<aura:handler name="init" action="{!c.doInit}" value="{!this}"></aura:handler>
<c:QFMultiSelectUIComp options_="{!v.lstExpenseData}" />
</aura:component>
When you will save this code then it will fail to save because we didn’t create “QFMultiSelectUIComp” till now. Before we create this component let we should create MultiSelectComponentController and MultiSelectComponentHelper . Now follow next step.
Step 2: Create lightning component controller “MultiSelectComponentController.js” and use below code.
({
doInit : function(component, event, helper) {
helper.expenseDetails(component, event, helper);
}
})
Step 3: Create lightning component helper “MultiSelectComponentHelper.js” and use below code.
({
expenseDetails : function(component, event, helper) {
var action = component.get("c.getExpenseDetails"); //Calling Apex class controller 'getTemplateRecrod' method
action.setCallback(this, function(res) {
var state = res.getState();
if (state === "SUCCESS") {
component.set("v.lstExpenseData", res.getReturnValue());
} else {
var toastEvent = $A.get("e.force:showToast");
toastEvent.setParams({
"title": "Error :",
"mode": "sticky",
"message": res.getError()[0].message
});
toastEvent.fire();
}
});
$A.enqueueAction(action);
}
})
We defined the controller “ExpenseOptionsCtr” in component so now create controller .
Step 4: Create apex controller “ExpenseOptionsCtr.apxc” , in this getting data from custom object Expense__c but you can use any object.
public class ExpenseOptionsCtr {
@AuraEnabled
public static List<Expense__c> getExpenseDetails(){
List<Expense__c> lstExpense=[Select Id,Name From Expense__c];
return lstExpense;
}
}
Step 5: Create lightning component “QFMultiSelectUIComp.cmp” and use below code.
<aura:component >
<aura:attribute name="MultipleoptnId" type="object" />
<aura:attribute name="options_" type="String[]" />
<aura:attribute name="selectedItems" type="String[]" />
<aura:attribute name="infoText" type="String" default="Select an option..." />
<aura:attribute name="width" type="String" default="245px;" />
<aura:attribute name="dropdownLength" type="Integer" default="4" />
<aura:registerEvent name="selectChange" type="c:SelectChange" />
<aura:method name="reInit" action="{!c.init}" description="Allows the lookup to be reinitalized">
</aura:method>
<aura:handler name="init" value="{!this}" action="{!c.init}" />
<aura:attribute name="dropdownOver" type="Boolean" default="false" />
<div aura:id="main-div" class=" slds-picklist slds-dropdown-trigger slds-dropdown-trigger--click ">
<button class="slds-button slds-button--neutral slds-picklist__label" style="{!'width:' + v.width }" aria-haspopup="true" onclick="{!c.handleClick}" onmouseleave="{!c.handleMouseOutButton}">
<span class="slds-truncate" title="{!v.infoText}">{!v.infoText}</span>
<lightning:icon iconName="utility:down" size="small" class="slds-icon" />
</button>
<div class="slds-dropdown slds-dropdown--left" onmouseenter="{!c.handleMouseEnter}" onmouseleave="{!c.handleMouseLeave}">
<ul class="{!'slds-dropdown__list slds-dropdown--length-' + v.dropdownLength}" role="menu">
<aura:iteration items="{!v.options_}" var="option">
<li class="{!'slds-dropdown__item ' + (option.selected ? 'slds-is-selected' : '')}" role="presentation" onclick="{!c.handleSelection}" data-value="{!option.Name}" data-selected="{!option.selected}">
<a href="javascript:void(0);" role="menuitemcheckbox" aria-checked="true" tabindex="0">
<span class="slds-truncate">
<lightning:icon iconName="utility:check" size="x-small" class="slds-icon slds-icon--selected slds-icon--x-small slds-icon-text-default slds-m-right--x-small" />
{!option.Name}
</span>
</a>
</li>
</aura:iteration>
</ul>
</div>
</div>
</aura:component>
Do not panic if your code is not getting save. Just follow the complete process and save code in the last. It will save successfully.
Step 6: Create lightning component controller “QFMultiSelectUICompController.js” and use below code.
({
init: function(component, event, helper) {
var values = helper.getSelectedValues(component);
helper.setInfoText(component, values);
},
handleClick: function(component, event, helper) {
var mainDiv = component.find('main-div');
$A.util.addClass(mainDiv, 'slds-is-open');
},
handleSelection: function(component, event, helper) {
var item = event.currentTarget;
if (item && item.dataset) {
var value = item.dataset.value;
var selected = item.dataset.selected;
var options = component.get("v.options_");
//contro(ctrl) key ADDS to the list (unless clicking on a previously selected item)
//also, ctrl key does not close the dropdown (uses mouse out to do that)
if (event.ctrlKey) {
options.forEach(function(element) {
if (element.Name === value) {
element.selected = selected === "true" ? false : true;
}
});
} else {
options.forEach(function(element) {
if (element.Name === value) {
element.selected = selected === "true" ? false : true;
} else {
element.selected = false;
}
});
var mainDiv = component.find('main-div');
$A.util.removeClass(mainDiv, 'slds-is-open');
}
component.set("v.options_", options);
var values = helper.getSelectedValues(component);
var labels = helper.getSelectedLabels(component);
helper.setInfoText(component, labels);
helper.despatchSelectChangeEvent(component, values);
}
},
handleMouseLeave: function(component, event, helper) {
component.set("v.dropdownOver", false);
var mainDiv = component.find('main-div');
$A.util.removeClass(mainDiv, 'slds-is-open');
},
handleMouseEnter: function(component, event, helper) {
component.set("v.dropdownOver", true);
},
handleMouseOutButton: function(component, event, helper) {
window.setTimeout(
$A.getCallback(function() {
if (component.isValid()) {
//if dropdown over, user has hovered over the dropdown, so don't close.
if (component.get("v.dropdownOver")) {
return;
}
var mainDiv = component.find('main-div');
$A.util.removeClass(mainDiv, 'slds-is-open');
}
}), 200
);
}
})
Step 7: Create lightning component helper “MultiSelectComponentHelper.js” and use below code.
({
setInfoText: function(component, labels) {
if (labels.length === 0) {
component.set("v.infoText", "Select an option...");
}
if (labels.length === 1) {
component.set("v.infoText", labels[0]);
}
else if (labels.length > 1) {
component.set("v.infoText", labels.length + " options selected");
}
},
getSelectedValues: function(component){
var options = component.get("v.options_");
console.log('options:='+options);
var values = [];
if(options!==undefined){
options.forEach(function(element) {
if (element.selected) {
values.push(element.Name);
}
});
}
return values;
},
getSelectedLabels: function(component){
var options = component.get("v.options_");
var labels = [];
if(options!==undefined){
options.forEach(function(element) {
if (element.selected) {
labels.push(element.Name);
}
});
}
return labels;
},
despatchSelectChangeEvent: function(component,values){
var compEvent = component.getEvent("selectChange");
compEvent.setParams({ "values": values });
compEvent.fire();
}
})
Now you will save the code but it will not save because we didn’t create event right now.
Let’s create event “SelectChange.evt”
Step 8: Create lightning event “SelectChange.evt” and use below code.
<aura:event type="COMPONENT" description="Despatched when a select has changed value" >
<aura:attribute name="values" type="String[]" description="Selected values" access="global" />
</aura:event>
You can check – Salesforce consulting companySalesforce implementation partner
Salesforce Health Cloud
-
August 24, 2017
-
Nirupama Shree
Q) What is Health Cloud?
As in today’s world people are generally suffering from various diseases. And they need to consult doctors time to time, still they don’t get any relief which results into changing the doctor which is also cost consuming. So for this Health Cloud, supports in creating a one to one relationships of the Health services provider with the patients.
Health Cloud’s main aim is to connect the caregivers and patients with a focus on patient’s graphs that has been obtained from various medical devices, electronic medical records etc. Health Cloud provides a complete view of the Patient’s data. Salesforce focuses on making the system flexible for keeping tracks of the patients and also how the patients population can be controlled in a great way. Private special community is the component/medium through which patients and caregivers can communicate directly with each other.
The company is working with leading software vendors and systems integrators to tie together existing medical IT systems and layer on Salesforce’s trademark customization.
Taking an example: A person suffering from dengue visits a care center telling his/her problem about joint pain. But the doctor on duty may be new and thus not knowing the patient has already visited twice for the same problem. If all these information was fed in the database, the process could have been much easier leading to a much better treatment.
How Salesforce collided with Health Care providers?
Firstly, the health care providers start putting their patient’s data in the form of records in Salesforce to keep all the information related to patients secure. Then the Insurance and pharmaceutical companies after realizing the big competition decided to use the software for keeping the patients data and the prescribed medications.
Installing Health Cloud in salesforce
Go to setup-> search for Accounts in quick search bar -> Account settings -> Edit -> enable “Allow users to relate a Contact to multiple Accounts”.
Install the Health Cloud package.
Login as a System Administrator and Install.
Setup the org- Setup my domain and deploy to users. Assign the default Record Types, Page Layouts and Permission sets to the System Administrator profile.
Configure Health Cloud Profiles, Permission Sets and roles.
Customize the Health Cloud Console i.e. key components and attributes according to the company needs.
Migrate the patient’s data.
Benefits of Health Cloud:
Complete Patient’s health View: Track patient’s Health Status and provide proper medications. And also teach them how to deal with it keeping it transparent.
Smart patient management: Schedule the appointments for patient’s. Collaborate patients with caregivers through Private Community like a family.
Connected patient engagement: Health Cloud makes it possible for the patient to get involved in their treatments by handling them remote monitoring and also provides the chance to coordinate with the primary providers and care coordinators till the end of the treatment
Salesforce Health Cloud: It collates the complete information of the patient in one software so it is easy for health cloud to make decisions and hence start the effective treatments. And the patients can also access their complete status or medications through mobile applications.
Salesforce Health Cloud View:
Limitations of Health Cloud:
Health Cloud is available in Microsoft Internet Explorer 10 or 11.
In timeline, the field showing the number of days can show negative days also.
The “After” option doesn’t work in recursive tasks.
By clicking the “Edit” option on objects detail pages in console will refresh all the tabs in the console.
Pricing:
Health Cloud for Enterprise Edition: $300 USD per user per month
Health Cloud for Unlimited Edition: $450 USD per user per month
That is all for this article, in case you need Certified Salesforce Consultant for any Salesforce related work, then please feel free to reach out to sales@girikon.com
With Shield, Salesforce looks to strengthen its promise of taking its Trust Services to the next level. Now, even industries with regulatory and compliance requirements such as Financial Services, Healthcare, and Public Sector can leverage the speed and innovation of cloud computing with the assurance of highest level of data protection, availability, and performance.
The needs of specific industries can vary depending on the criticality of the data that they manage and use. While some may need to track sensitive customer being exported others might need to encrypt them or maintain an audit trail of data to safeguard data integrity. The understandably high pressure of balancing the shift to cloud platforms with meeting compliance needs has deterred several organizations from making the shift thereby being bereft from the benefits that it promises to bring along!
Salesforce Shield is a premium set of integrated services built natively in the Salesforce1 Platform. With it, comes the capability to track the way in which one’s sensitive data is being used & handled. It certainly is a strong empowering tool for customers with complex governance and compliance needs to be able to track data going back up to ten years along with sensitive data encryption if they so desire.
Salesforce Shield includes the following core services:
Event Monitoring: This feature gives customers the transparent visibility into which users are accessing what kind of data along which the actions that they are taking on it.
Field Audit Trial: Salesforce customers now have the ability to go back & check their data state up to 10 years. It provides Audit trial data for up to 60 fields per object.
Platform Encryption: All sensitive data can now be easily encrypted at rest (at the metadata layer) without hampering any business functionality.
Transaction Security: Users can add various processes to Event Monitoring using the transaction security feature. Specific events can be configured with Salesforce to trigger actions as required. For example: When any User tries to access the Salesforce from any unsupported browser it will not provide access.
The Shield Platform works through the combination of the tenant key (available with the customer) and a master secret controlled by Salesforce to generate the org-specific data encryption key. This key is used to encrypt sensitive data stored in standard and custom fields, files, and attachments. The derived keys are never persisted to disc, ensuring maximum security for encryption keys.
Setup Salesforce Shield
Setup -> Security Controls -> Platform Encryption
Create Tenant Secret
Enable encryption for files, fields, and attachments
Assign permission to generate, rotate, and archive your org’s keys
If user has the permission to “View Encrypted data”, then the data gets decrypted before presenting it for user
Fields with the following field types: Text, Long Text Area, Phone, Email and URL in standard or custom objects can be encrypted
So, you have been using Salesforce for quite some time now and have tons of data that you plan to leverage! You are definitely ready to ahead and grab Salesforce Einstein Analytics, the Salesforce based cloud platform that connects with multiple data sources, creates interactive views of the same providing insights and contexts to take business decisions and actions based on them.
With the volume of data rising dramatically, manual analysis has become a remote possibility. The platform brings about advanced analytics capabilities powered with artificial intelligence to the fingertips of CRM users. Thanks to Einstein Analytics with AI, they are now well-equipped to take much informed decisions, faster.
How specifically does Salesforce Einstein Analytics help your Business?
Once configured properly, customer’s entire data, including social & activity data (from email, Chatter, calendar etc.) can be fed to Einstein which will churn out customized models for each customer using its strong AI engine. With relevant insights and easily interpretable visual representations using Dashboards etc., business users now have access to Descriptive analytics, Diagnostic analytics, Predictive analytics and Prescriptive analytics. Using these, some of the immediate benefits (but not limited to) can be listed as below:
Devise customized marketing strategies for each customer
Plan best next steps for any client
Devise better customer service and engagement roadmaps
With significant patterns available, based on business users’ data, clients can be given better recommendations
Personalized interactions with each and every vital account provides business growth avenues
Assist with Measuring, Optimizing and Modifying the Campaigns run by the organization & so on…
Works with several data sources – so consolidated insight available
The possibilities are immense if rightly implemented and configured with the business specific customization done.
Salesforce Einstein Analytics – Points to note
Einstein Data Discovery is now Einstein Discovery
At the moment Salesforce offers the Einstein Analytics apps in three out-of-the-box modes:
The Salesforce Einstein Analytics Sales app has pre-configured KPIs for roles. This allows collaboration between managers and executives. This can be well used to manage forecasts, gain pipeline visibility, track team performance and close deals with opportunities from anywhere, at any time.
The Service Analytics app is for for call center managers. It offers relevant insights for channel optimization and boosting agent efficiency.
The B2B Marketing Analytics App provides insights on engagement, pipeline, and campaign performance, for marketers engaged in Business to Business dealings.
The Einstein Analytics comes with certain limitations which are good to be aware above. The same can be referred to here: https://help.salesforce.com/articleView?id=bi_limitations.htm
How Girikon, as a Salesforce Consulting Partner Helps
Organizations looking at implementing Salesforce Einstein Analytics Cloud can reach out for value loaded services including:
Salesforce Licensing Consulting & procurement
Salesforce Einstein Analytics Solution Design
Salesforce Einstein Implementation & customizations
Data Migration from Legacy/Other Systems
Salesforce Einstein Analytics Training
Salesforce Einstein Analytics Support
For most enterprises, the search for a right eco system with efficient, robust and reliable tools to manage all aspects of the business ends with Salesforce. Here we look at one such tool within the ecosystem, Quote-to-Cash.
Salesforce defines Quote-to-Cash as the complete set of business processes involved in selling, from creating initial offers for prospects to collecting cash. Quote-to-Cash begins with Configure, Price, Quote (CPQ)—configuring the offer, developing the appropriate pricing, and creating the quote. It continues on through negotiations, invoicing, payment, and even renewals and renegotiations.
An efficient Quote-to-Cash process can bring in revolutionary changes in an organization’s sales cycle. A suitable solution brings efficiency & speed in the process by eliminating errors, reducing workload and minimizing time spent on each activity — thereby allowing more time in hand to close more deals.
Do go through our other blog for expected benefits from an automated quote to Cash process using Salesforce @ https://www.girikon.com/blog/salesforce-quote-to-cash-easier-and-more-accurate-quotes-and-billing/
While the list of probable benefits that can be leveraged is long, the real effort involved is in figuring out the exact process to be implemented so as to extract maximum advantage.
Before initiating on a Quote to Cash Implementation
Set time aside for an elaborate analysis of the process in use. This serves as preparatory steps to the execution of the exact, most effective solution suitable for your business.
Look at the in use Quote-to-Cash process with a view to find opportunity for improvements. Simulate a typical request from a client for a quote and go in to throw in as many complications as the team might have faced in real-time.
Follow a real deal through the cycle and consult with all departments (sales, sales operations, legal, and finance departments) involved in interim stages. Gather details for clear understanding & record difficulties/pain points.
For each step involved – Define the RASCI (Responsible, Accountable, Supportive, Consulted, and Informed) model.
Record all of the tools, systems, and applications in use. Also to be noted are the physical locations (office, online, or remotely) where each step takes place.
Record reasons behind decisions to have the process in that particular way.
Question, Question and question more at each step – record everything
Also record time taken for each step. This will help to analyze if the new process implemented brought in any process improvement!
With all this analysis done, you will now be ready to design the new process with the required step eliminations, improvements and consolidations. New Rules can now be defined, changes brought in to reduce typical errors, bottlenecks, slowness that occurred in the past.
Figure out the technology cocktail you would need
In addition to the right Salesforce suite setup you might want to use other tools to dovetail. This decision will depend on your current pain points. Some recommended ones can be:
Conga Action Grid: for updating and managing data pre-sale
Conga Composer: for generating data driven documents, including combined documents like customized marketing materials, personalized proposals, sales orders and invoices
Conga Redlining: for managing the back-and-forth of contract negotiation within Salesforce
DocuSign: for completing the final approval and signature on the contract
Some more guidelines for streamlining things further
Standardize Documents – Standardizing Contract documentations for different products and services is a great efficiency enhancer
Lookout for more ways to automate manual processes in the contract management process (Document versioning, audit trails etc.), negotiation process or elsewhere
Leverage workflows to the hilt to usher in more transparency and reduce bottlenecks
Use Collaborative tools for Legal team, sales reps, and customers, but try to keep it all native in Salesforce. This increases adoption, ease-of-use and consequent speed
How Girikon, as a Salesforce Consulting Partner Salesforce Consulting Partner Helps
Organizations looking at implementing Salesforce Quote to Cash can reach out for value loaded services including:
Salesforce Licensing Consulting & procurement
Salesforce Solution Architecture & Design
Quote to Cash Discovery, Consultancy, Implementation & Customizations
Any other custom development as required
Data Migration from Legacy/Other Systems
Salesforce Quote to Cash Training & Support