ARE YOU READY FOR CLOUD TECHNOLOGIES?
Sep20

ARE YOU READY FOR CLOUD TECHNOLOGIES?

Whether you accept or not but Cloud Technology is a great tool for businesses looking for staff productivity. Availability of data from remote locations, significantly reducing IT costs. Then why we are still not open to accepting its benefits without having second thoughts? Let’s Not to forget the human tendency, not to accept new changes. We all like the way in of which we are comfortable & habitual about. Anyone working in IT industry know the market shifts way too fast they can come up with, technology comes fast and goes fast, to stay ahead in competition companies need to make quick decisions. At some point companies need to take that “BIG STEP”, the step which they fear about but crucial for their success. More about loans by loansflow But before taking that first big step, you need to ask yourself what is CLOUD? and are you ready for it? Let’s throw some light on it which will eventually gear you up for the CLOUD TECHNOLOGY. THE CLOUD IN BRIEF With cloud now there is no longer need to use your computer hardware to store data. Cloud enables you to access information and applications over the internet from almost anywhere. It keeps you informed to make good decisions for your business. You just have to log in to a portal and order your cloud services. The cloud services are provided by your service provider which can act as a virtual machine & a gatekeeper of cloud technology and resources. Now the provider will validate your request and once confirmed it will give a portion of a service set onto their platform. Generally, we prefer this kind of setup as Saas- (Software-As-A-Service) model. WHO ELSE CAN BE ON CLOUD WITH ME? This is the most attractive feature of the cloud. The sharing of files and documents entirely depends upon you. It can be shared with whoever you want to give access to. It is you who give permission to an employee what to access and what not to access. This helps you to keep your information safe, avoid the risk of losing your valuable information and minimize the risk of virus or malware. THE GOALS TO BE ON CLOUD Cloud is inexpensive. It is installed online so no need to install local software onto your system. At a very low cost, you can increase your storage size and memory. It allows you to pay on monthly or yearly basis making it flexible for the users. It helps you to terminate your service usage anytime and only has to pay when you use your services & resources. There can be many...

Read More
SKUID-Scalable Kit for User Interface Development
Jan10

SKUID-Scalable Kit for User Interface Development

SKUID SKUID has always been my favourite since the first time I saw this in Dreamforce 2014. My first interaction was with their team on Dreamforce booth and the after understanding its capabilites I was amazed! SKUID is set of tools that allow you to change almost any element of your Salesforce User Interface, quickly and easily. We can quickly implement any changes as per suggested by your team, across your org and even in Production. It is basically used to build the UI to have a look on the data your company needs. STORY: Salesforce connected Rich (Rich Slack, CFMO of Chrysalis and CEO of Meridian Meds) with a private developer who would charge $300,000 – $500,000 to build out their user interface. It was a non-starter. Rich decided to kill the Salesforce project and hire a team of developers to create their own platform. However, the team hit many roadblocks. Rich realized that Salesforce could do what he needed if he could figure out a way to overcome the gap of user interface. That’s when he found Skuid. Within 2 days, Rich had re-skinned the user interface of his app within Salesforce. He rebuilt his entire system during his nights and weekends in four months.  Let’s get Started with SKUID: Compose your new page from Skuid Central tab in your Salesforce Org Connect your Salesforce objects and external data through models present in Skuid. For each MODEL, choose the standard and custom fields from your Salesforce objects that you want to include in your page, and can even set criteria for the records to get display on your page. You can create as many model as needed. The only thing to know is that they will be loaded the way they are listed. For each model we have: Fields: Fields refer to the fields from the object which we want to show in our page. Conditions: They apply criteria for the records which are to be shown onto the page. Actions: They help us to specify the actions which we want our page to perform after some event. We have two properties for Model which are Basic & Advanced. Basic properties let you define the model Id, data source type, SObject name, model behaviour, number of pages to be displayed etc. Advance properties let you have a look on cloning the data, Query Deleted, Update Salesforce Recently Viewed Info etc. Skuid provides you with pre-built components which can be used to create your own page. Also you can create your own components. There is only the need to drag and drop those pre-built components and you can...

Read More
5 things about Salesforce Certification
Jan03

5 things about Salesforce Certification

This blog is for the Developers who wants to get a Salesforce Developer I Certification . What is Salesforce Certification? Why is it so important for the developers seeking a career in Salesforce? Salesforce certification is vital to the salesforce career path as it differentiates you from other developers, makes you an expert in your field. This Certificate is provided by salesforce.com where people demonstrate and prove their technical Skills in different  areas of Salesforce. It’s a damn good certification, if you are thinking about a career in Salesforce, by enhancing your skills and expertise in respective fields. It is very easy to get hired in an organization with  a salesforce certification in hand. You need to follow these steps  to enroll  for examination : First you have to create your webassessor Account on             https://www.webassessor.com/wa.do?page=createAccount branding=SALESFORCE Secondly Register and schedule your exam Five  things you must know while preparing for salesforce certification:-  Course Content  and their  weightage -: The Salesforce Certified Platform Developer I exam measures a candidate’s knowledge and skills related to the objectives listed below. A candidate should have hands-on experience of developing custom applications on the Force.com platform and have demonstrated the application of each of the features/functions below. 2. Prepare each topic with written practice of programs. Exploring it on trailhead will be a  great start. It will provide huge knowledge for practical implementation. In different areas. Below is the  link to access trailhead: https://trailhead.salesforce.com/ 3. Go through /Solve previous years certification:- Preparing from previous year question papers is always a good strategy to cover frequently asked topics in a short span of time.  4. Practice as many Mock test papers as possible once you think you have a good command on Salesforce syllabus. Mock test papers are available on various websites for free where you can practice them. Do register yourself  if required (as asked by some of the websites)  5. And last but not least, be confident and relaxed while writing the exam and remember the best way to gain confidence is to do more and more practice. According to my exam experience every aspirant must prepare well in the following topics as most of the questions I faced in the exam were from these topics : Validation Rule Workflow Rule Process Builder Object Relationships So all the best guys for exam. The exam is simple and easy. All you need is to do...

Read More
Wave Dashboards in Lightning Pages
Nov25

Wave Dashboards in Lightning Pages

A Wave Dashboard is a collection of widgets that work together to tell a data story from multiple angles. Depending on what you want the dashboard to show or how to behave, you can add different widgets, such as key performance indicators, charts, tables, filters, and images.Embedding Wave Analytics Dashboard component to a Lightning homepage or record page can provide interactive visualization of your data. It is currently available in Lightning experience only. It offers additional features to help you build Dashboards more quickly and easily. Use a template to create a Dashboard with a predefined layout. Create customized layouts to optimize the display of a Dashboard on different types of devices, like mobile phones, tablets, and desktops. Use the wizards to quickly build widgets. Use drag-and-drop, snap-to-grid, and browser reflow to effortlessly add, position, and align widgets in a Dashboard. To add a Dashboard to your Lightning Page follow the steps below:   Select Wave Dashboard Component in the Lightning App Builder From the Dashboard drop-down list, select the Dashboard to display From the layout drop-down list, select the type of screen where your Lightning page will be viewed Configure following attributes of the Wave Analytics Dashboard:  Show Sharing Icon option lets you include Share icon on the Dashboard. If the icon is present, users can click to open the Share dialog, where they can post to Chatter and download images and data Show Title checkbox gives you control over the visibility of the Dashboard title Open Links in New Windows attribute, you can specify where links from the Dashboards to other assets are opened Hide On Error checkbox gives you control over whether the Wave Analytics Dashboard appears if there is an error Filter attribute, you can use JSON to filter dataset fields at run...

Read More
Salesforce Metadata API
Aug23

Salesforce Metadata API

What is Metadata ? First you need to understand data. What is data in context with Salesforce. Data is anything which is stored in a database like records related to Contacts,  Accounts, Leads Opportunity etc. Metadata : Metadata can be defined as the set of data about another data. i.e., Configuration/Code/Logic of the underlying structure which is used to store the data (Records). Another definition is you can say the database structure in which you will be saving the data.  Metadata Api for Salesforce can do several things programmatically. Some of the tasks are mentioned below: You can read, create, update, delete following components in a Salesforce organization. Custom Objects/Fields. Visualforce pages. Page Layouts. Validation rules. Apex. Workflows. Approval processes. Profiles. Reports etc. Security.                   You can configure a Salesforce organization just by running a piece of code. It means that you can create Objects,Fields,Validation,Workflows, Profiles, Reports for a particular client organization just by running the piece of code so that you need not do all the customisation settings manually which will consume time if you have to do that several times for different clients for the same configuration settings. You can also take the backup of your organization customisation settings just by fetching the metadata WSDL from your Salesforce org. For this You need to click setup>type API-Click on API >Click Generate metadata WSDL and download the xml file. There are two types of Metadata Api calls: Synchronous – This will give the result immediately as soon as you call a method. Asynchronous – This will not give result immediately, it will take time. Asynchronous : There are four types of methods which we can use: Create();   Update(); Upsert(); Delete(); We will discuss only for synchronous method. Synchronous : There are five types of methods which we can use: (i) createMetadata(); saveResult[] = metadataConnection.createMetadata(Metadata[] metadata); (ii) readMetadata(); readResult = metadataConnection.readMetadata(string metadataType, string[] fullNames); (iii)updateMetadata(); saveResult[] = metadataConnection.updateMetadata(Metadata[] metadata); (iv)upsertMetadata(); spsertResult[] = metadataConnection.upsertMetadata(Metadata[] metadata); (v)deleteMetadata(); seleteResult[] = metadataConnection.delete(string metadataType, string[] fullNames); All these classes saveResult, readResult, upsertResult, deleteResult comes from a main class that is MetadataService.cls in which all the relevant methods are present to function Read, Create, Update, Upsert or Delete properly. Now I will demonstrate how to create Custom components. You can use following methods to create components: (A) To Create a Custom Object: You need to add this code to your class which you are using and call this method via class name to create the object. Note: MetadataService is also a class which have several methods and used in these methods. Create a Custom Object: public static void createObject() {  ...

Read More
Salesforce Code Move Strategy
Aug09

Salesforce Code Move Strategy

Why sometimes a few lines of code changes take several days of deployment. Find the answers and Code Move Strategy:- Recently In one of my project I faced the following situation: We did a code change in trigger. Changed a string value from “Demo” to “Trial”. The code change hardy took 1 minutes. Client was aware of the changes and  time it will take so we estimated the work as 2 hour including code changes, analysis of its impact and deployment. When the developer finished deploying the code changes it took him 2 days (16+ Man-hours). Yes it is a surprise. Now let me list out the problems he faced.   Code coverage of the existing trigger was 12% (Our Company Best Practice is 85%) Code coverage of overall production org was less than 75%. Yes this is hard to believe but this do happen when we push things in production without code coverage. Existing test classes were failing in production. Trigger in production was different than in Sandbox. Yes this is also possible when we have multiple sandboxes and people do code overrides as they are competing against each others. Deployment had a narrow slot of 2 hours during which end client were not working. Batch Jobs working on the same object were preventing the Trigger to deploy. We gave our best as a team and came up with the following strategy which changed our entire company’s estimation and requirement analysis process. Code Move Strategy: Step 1: Check the existing production code coverage by “Run All Test”. Step 2: Lookout for test class failures if any. Step 3: List out the Batch jobs running in production. Step 4: Compare the code between production and sandbox before working on it. If any differences found report it to your end Client/Manager. Step 5: Make sure if you are deploying an apex code its code coverage should be above 85%. Step 6: Use Changeset for small size deployment with less components. Keep the changeset names in a well defined order. Step 7: Use Eclipse or Ant Migration tool for deployment with many components.If you have the privilege of Full copy sandbox use it for trial deployment and go live. Full copy sandbox gives you an advantage of less risk more effort based deployment process. Step 8: Deactivate the necessary batch jobs and validation rules before deployment. Step 9: Make sure the deployment is in the right time slot when end users are not working or keep the team informed for any surprises that may come while deployment or after that. Step 10: Validate and Deploy. Reactivate the Jobs, VRs etc. Step...

Read More
Welkin Suite
Jun13

Welkin Suite

 Welkin Suite The Welkin Suite is a new generation Force.com platform IDE which allows working with Apex, Visualforce, HTML, CSS, JavaScript, any images as well as executing unit tests, SOQL queries, anonymous apex and provides many other handy features from a single development tool. Now what  Welkin Suite can do : Customizable Folders Structure No more limitations for files or folders structures. Now developers can organize them in whatever way they want.   [NEW] Lightning Components You can develop great Lightning applications and components directly in the IDE in the same way as developing with Apex or Visualforce. Develop your own components and applications based on the Lightning Components framework directly in The Welkin Suite using all of the great features that it offers for improved comfort and development productivity.         Git Support: Improve your teamwork experience – work with Git repository right from The Welkin Suite without switching to other applications. Apex Code Completion: Save time, improve the coding velocity, and avoid making mistakes with Code Completion functionality for Apex. Anonymous Apex Execution: Test new solutions, debug your code or work with your organization using the Anonymous Apex with all of the code editing features you’ve got used to. Debug Logs: When debugging code you usually execute Anonymous Apex, perform some actions in the UI or start scheduled jobs which then produce lots of logs for you to go through. In most cases your actions would provide you whatever information you need pretty easily but sometimes you need only some specific logs – with very long duration, very small or very big logs, failed or succeeded logs and so on. Quick Search of a Current Selection: Once you select any text in your code all its occurrences within the document will be highlighted and marked on the scrollbar automatically. Latest Features : Added the option to start the Apex Retrospective Debugger from the Anonymous Apex files. Implemented an ability to navigate backward during the Debugging process. Implemented the tracking of exceptions in custom code during the Debugging process. Implemented the Tree view of a log in the split editor. Implemented an ability to configure the org­wide Debug Log levels. Added properties to the list of Locals during the Debugging process. Added address values for the Locals of the custom types during the Debugging process. Added the Debug related panels into the Debug menu. Added the hotkeys to the Debug navigation in the Main Menu. Improved the performance of the parser during the work with the Debug logs. The file opened in the Debug Mode become locked for the other processes. Implemented the saving of the last state of the ‘Show Only User Debug Messages’ option. Fixed the issue...

Read More
Employee  Community
May18

Employee Community

Introduction To Community: Salesforce Community is a great platform  for sharing information and collaborating with the people who can help the company enhance their business.By using Salesforce Community,All those people who are essential for completing the business goals that are set by the organization can collaborate with each other. More http://www.salesforce.com/in/communities/overview/  Benefits of using Salesforce Community: Improves Service: Salesforce Community will help the organization in connecting with the customers.Therefore It would be easier to understand the customer requirement which will result in providing better services to customer. Enhance Sales: Because by using Salesforce community it would get easier for the Employees,distributors and resellers to communicate with each other therefore it will drive more sales which will eventually result in more profit for the organization. Types of Communities in Salesforce: There are basically two types of Communities in Salesforce which are as following:  1.)Internal Community  2.)External Community Before we go into the details of Employee Community it will be great if we have basic knowledge of partner community and also the major differences between employee community and partner community. Internal Community: The Internal community is used for the members who are directly part of the organization i.e. Employees. External Community: External Community is created for the users who are not directly part of the organization. Types of External Community: Partner Community: As we all know the partners are not directly part of the organization but still they are very important for enhancing the business of organization.Therefore Salesforce has  provided this platform of Partner Community where you can interact with your partner and also provide limited access of your org according to your requirement. Customer Community: Just like the partners Salesforce has provided a platform for customers as well.Using this platform an organization can interact with their customers. This helps them in solving the customer’s problem. It also helps them in understanding Customer’s requirement. So all and all it will help the organization in enhancing their business. Communities User Licenses: Every Organization needs to have valid Licenses for creating communities.The type of community that an organization can create depends on the type of License that they possess.It also defines the number of communities that an organization can create. Types of Community User Licenses: Salesforce has divided Community User Licenses basically into two parts which are as following: Internal User License :   Employee Community is an internal user license which has access to 10 custom objects and tabs.It also has access to Accounts and Contacts.    External User License: There are 3 types of External User licenses Which are as following: Customer Community: This community is best suited for the organization which has...

Read More
Day 4 Assignment (VFpage, JavaScript)
Jan26

Day 4 Assignment (VFpage, JavaScript)

I have created a 5 Days Salesforce based programming and configuration assignments for practice and improving your skills. This blog have the third day assignment. Since all the blogs are related I would recommend beginners to start from Day 2 assignment and not directly jump to this blog.     Requirement: We have a university “St Judes” which wants its salesforce account to get configured by us. Following are the requirement of this client.  1. Create a VF page listing a quick search for all the Professors. A quick search will be a on key press VF page. If the users press “V” in the field all the professors with starting name “V” like Vineet, Vinay .. etc will list down in the page. AJAX Toolkit Developer Guide SOLUTION: VisualForce Page Visual force page code. <apex:page id="page" controller="Basic2SearchProfessorsDynamically" sidebar="false"> <apex:form id="form"> <apex:pageMessages id="errors" /> <apex:pageBlock title="Find Me A Professor!" mode="edit" id="block"> <table width="100%" border="0"> <tr> <td width="200" valign="top"> <apex:pageBlock title="Parameters" mode="edit" id="criteria"> <script type="text/javascript"> function doSearch() { searchServer(document.getElementById("profName").value, document.getElementById("mail").value, document.getElementById("YOE").value ); } </script> <apex:actionFunction name="searchServer" action="{!runSearch}" reRender="results,errors,debug"> <apex:param name="profName" value="" /> <apex:param name="mail" value="" /> <apex:param name="YOE" value="" /> </apex:actionFunction> <table cellpadding="2" cellspacing="2" id="table"> <tr> <td style="font-weight:bold;">Name<br /> <input type="text" id="profName" onkeyup="doSearch();" /> </td> </tr> <tr> <td style="font-weight:bold;">Email<br /> <input type="text" id="mail" onkeyup="doSearch();" /> </td> </tr> <tr> <td style="font-weight:bold;">Year Of Experience<br /> <input type="text" id="YOE" onkeyup="doSearch();" /> </td> </tr> </table> </apex:pageBlock> </td> <td valign="top"> <apex:pageBlock mode="edit" id="results"> <apex:outputPanel id="panel" rendered="true"> <apex:pageBlockTable value="{!profList}" var="prof"> <apex:variable value="{!0}" var="cnt"/> <apex:column headerValue="Action"> <apex:commandButton value="Delete" style="background: red; color: white;" action="{!deleteProf}" rendered="true" reRender="panel"> <apex:param value="{!prof.Id}" name="profToRemove" assignTo="{!rowToRemove}"/> <apex:param name="index" value="{!cnt}"/> </apex:commandButton> <apex:variable var="cnt" value="{!cnt+1}"/> </apex:column> <apex:column > <apex:facet name="header"> <apex:commandLink value="Professor Name" action="{!toggleSort}" reRender="results"> <apex:param name="sortField" value="Name" assignTo="{!sortField}" /> </apex:commandLink> </apex:facet> <apex:outputField value="{!prof.Name}" /> </apex:column> <apex:column > <apex:facet name="header"> <apex:commandLink value="Professor Email" action="{!toggleSort}" reRender="results"> <apex:param name="sortField" value="Email__c" assignTo="{!sortField}" /> </apex:commandLink> </apex:facet> <apex:outputField value="{!prof.Email__c}" /> </apex:column> <apex:column > <apex:facet name="header"> <apex:commandLink value="Year of Experience" action="{!toggleSort}" reRender="results"> <apex:param name="sortField" value="Year_Of_Experience__c" assignTo="{!sortField}" /> </apex:commandLink> </apex:facet> <apex:outputField value="{!prof.Year_Of_Experience__c}" /> </apex:column> </apex:pageBlockTable> </apex:outputPanel> </apex:pageBlock> </td> </tr> </table> <apex:pageBlock title="Debug - SOQL" id="debug"> <apex:outputText value="{!debugSoql}" /> </apex:pageBlock> </apex:pageBlock> </apex:form> </apex:page> 2. The quick search will have a delete button beside each Professor row. This will delete a particular Professor. Once the Professor is deleted all the students from the Professors Course will get de-enrolled(Removed)  SOLUTION: VisualForce Page Controller public with sharing class Basic2SearchProfessorsDynamically { //the soql without the order and limit private String soql {get; set;} //the row to be delete public String rowToRemove{get; set;} //the collection of professors to display public List<Basic2Proffessor__c> profList {get; set;} //Required Professor(Dummy Professor) Basic2Proffessor__c reqProf = [SELECT Id, Name FROM Basic2Proffessor__c WHERE Name = ‘Professor Required’]; //the current sort direction. default...

Read More
Day 3 Assignment
Dec28

Day 3 Assignment

I have created 5 days Salesforce based assignment this is third 3rd day I hope you have already finished 1st and 2nd day. If not it is highly recommended to finish the blog-1, and blog-2 part 1 & part 2  first. The assignment is in format of a typical Salesforce requirement, comparable to a small size project. Please go through the requirements which are well defined and should be easily understood if you have a basic understanding of Salesforce sales and service cloud. Your data model design or solution approach to the requirements might be different from the answers provided here. Every solution is correct if you are fulfilling all the requirements. Requirement: We have a university “St Judes” which wants its salesforce account to get configured by us. Following are the requirement of this client.   1. Since Student and Course are having a many to many relationship, the Junction object will have several fields representing the Student’s performance in those Courses. A Student will have the Status of PASS or FAIL and MARKS OBTAINED for each of its Course as well. Click here to learn more For this solution make a picklist having name Status and values PASS or FAIL and a number field named Marks Obtained in the junction object this will do the trick.   2. All the Professor will get an email 2 days before the Course completion asking the Professors to provide marks to those Students in its Course. Click here to learn more For this what i have done is first create a email field in in Professor and Course object and made the email field mandatory. Than I have created a trigger on Course to auto update the email field in the Course object with Professors email. I hope you have done part-1 and part-2 already and you have already created a trigger on course the best practices tells us that we should not make more than one trigger on a single object. So update this part also in your trigger and this part will auto update the email field in Course object with the email field in Professor.   Trigger: Map<Id, Course__c> profCourseMap = new Map<Id, Course__c>(); List<Course__c> fullCourseList = [SELECT Id, Name, Professor_del__c, Professor_Email__c FROM Course__c WHERE Id IN: Trigger.newMap.keySet()]; for (Course__c course : fullCourseList) { if (Trigger.isInsert) { profCourseMap.put(course.Professor_del__c, course); } if (Trigger.isUpdate && Trigger.oldMap.get(course.Id).Professor_del__c != course.Professor_del__c && course.Professor_del__c != NULL) { profCourseMap.put(course.Professor_del__c, course); } } System.debug(‘profCourseMap————–‘ + profCourseMap); System.debug(‘profCourseMap————–‘ + profCourseMap); List<Course__c> listToBeUpdated = new List<Course__c>(); List<Professor__c> mainProfList = [SELECT Name, Email__c FROM Professor__c WHERE Id IN: profCourseMap.keySet()]; for (Course__c course : profCourseMap.values()) { for (Integer i = 0;...

Read More