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
Dreamforce 15 Hangover!
Sep28

Dreamforce 15 Hangover!

  I am back  from SFO attending Dreamforce15 one of the mega events in IT world. After overcoming jetlag I am trying to settle down. Now in process of opening my travel bag and having a good look at the business cards received and goodies collected I am ready to write this blog. I am still having this Hangover from all the new features. Salesforce is coming up with and find myself in middle of digesting the knowledge I gained in this trip. Last year when I was in Dreamforce, which was also my first time, I thought “Nothing can get bigger than this” and I don’t know how Salesforce does this but this year it was absolutely bigger than last year. Hats of to Salesforce development team in overcomingall the technical challenges and coming up with Salesforce new Lightning experience and so many more exciting new releases. I am trying to summarize my experience in tits and bits with few comments. This time DF was awesome with the new products/features launches. 1. Salesforce New lightning Experience: This is the best release they did in DF history. Salesforce users were waiting for such responsive, sleek and  cool UI for a long time. ● PROS: The UI is refreshing. The simple check-box to activate this feature for one user at a time is smart step. ● CONS:  This will take user adaptability time. All the salesforce Admins will have to become Awesome Admin and representatives of salesforce and help their org get on this new UI. 2. Salesforce Component for Appexchange: Appexchange has become more mature with time. I think this will be a game changer now onwards. The latest trend I observe in Appexchange is now you can get either small applications(soon components) or big enterprise level application(more complete) targeting an entire industry/domain. 3. Activity timeline: This will be a loved feature by those Sales reps or users who were not able to get a good analysis of what was going on with their lead, opportunity, account etc on a smart timeline based model. 4. Salesforce IQ: SalesforceIQ (formerly RelateIQ) provides out-of-the- box, intelligent CRM for small businesses and productivity apps for sales teams. I need to explore the impact of this to a more deeper level and will try to soon come up with my side of analysis. I will be analyzing several other new features in coming days and will get back. I have a the following 3 key take aways : 1. Being a System Integrator I will be focusing more on launch useful applications on Appexchange. More apps with lightning components should be added. 2. Salesforce is taking UI seriously and we can help now help our old and new Salesforce clients take this awesome out of box Lightning experience 3. Salesforce has come so far that no-one...

Read More
AppExchange Development Checklist
May20

AppExchange Development Checklist

In this blog I will be writing down some of my AppExchange development checklist while developing an application for various. AppExchange is the Salesforce center on which one can launch their own salesforce Application. Appexchange is the hub of thousands of application where Salesforce users can reach out to various paid and free applications as per their need. Appexchange helps more than 2000 Independent Software Vendors (ISVs) to reach more that 120,000 Salesforce.com customers offering applications that either extend Salesforce.com CRM functionality or provide a solution entirely different from Salesforce CRM. While developing an Application in salesforce  I have always used the following checklist.  PLAN: Brainstorm an application idea: The application idea which is fresh and new on the platform and had some awesome features which will enhance the user experience or Salesforce as a CRM Background study: Make sure that you are not reinventing the wheel. Appexchange is already hosting several apps and have many applications with repetitive ideas. Applications trying to do the same thing in a better way is still appreciated but do make sure that your application is way better than the existing solutions. Believing in yourself is good but its always great to have a round of random feedback on the Application ideas before you plan to develop them. Paid or Free should be a decision which cannot be easily taken by small vendors since releasing a Paid application on Appexchange may need initial cost/fee of $2700. You can always come up with a free basic version initially and then once you application is hit then a more complex and Paid version. User Scenario: Make sure that all the User scenarios are very well thought of and does not leave any loose ends. When the purpose of the application is defined clearly still there may be a chance when some scenarios may have not thought of clearly. Salesforce Editions: Applications published on Appexchange can be easily installed on Developer edition, Unlimited edition, Enterprise edition. An application when being developed needs to be very certain that on which of the salesforce flavours(Editions) it can be installed. Developing an application for profession edition may require an extra step of creating Aloha app and testing them in Profession Edition before release.  DEVELOP: Plan the Development: Several small size utility tool type application can be developed straight from the idea and may not need a development plan but the applications having some wizard of pages may need a phase wise release cycle. Configuration: Make sure which all features in the application can configurable and which can be fixed is a tricky decision. Think wearing a User hat. Making...

Read More
Its wise to learn from other’s mistakes: P3
Apr30

Its wise to learn from other’s mistakes: P3

Since the dawn of Software development, It has been a tedious job to avoid technical mistakes. Developers being human can commit  mistakes. By sharing these few mistakes we as a developer make sure that we are learning and helping others avoid such problems. This is PART 3 in the series of blogs Part 1 & Part 2 I am writing to explain few of my mistakes, blunders or stupidity which I have committed in some of my projects. The mistakes were committed in different roles as a Developer or Consultant or Administrator. Reader is expected to have some prior knowledge of Salesforce so that this blog make some sense. It will be great if you have an understanding of how the various components are developed in Salesforce. A Salesforce Administrator or Developer is surely going to appreciate this blog.   Always Aim At Right Direction: Connections and Mapping STORY: We have recently take over a project which was being developed by another team in JitterBit. We were very much confident since we had earlier developed similar features and have successfully did a bidirectional data transfer from salesforce to another platform. We were Change Sets Overview supposed to login and start the trial connection and push some trail data in Sandbox. On the very first day of the project we logged in and started the cron job. As earlier explained by the developer that the settings and connections were mapped to the Salesforce sandbox environment and all the testing and dummy push can be done directly and when Go live will be required we can change the connections and Mapping to Live environment. MISTAKE: We started the trial push without verifying anything and data was pushed to salesforce production since the Jitter Bit connection was mapped to production. BOOM!  We got hit by a Train. Production data was overridden. LESSON LEARNED: Never believe on what any developer say if the topic/matter is related to Salesforce production. Always double check and verify before doing any kind of Connection based testing.   Re Inventing The Wheel: Creating Salesforce Out of Box Features. STORY: We got an opportunity to work for a company who was using the sales cloud in salesforce. Their in house developers were already neck deep in developing several features. We were given some bugs to fix in certain time period. In order to understand the underlying enhancements already done by the last developers I made sure that we spend enough time in analyzing WHAT changes were done and WHY? MISTAKE: The Salesforce Enterprise org was having salesforce Standard objects recreated as custom. In fact the entire Sales model with Opportunity, Product, Quote,...

Read More
Its wise to learn from other’s mistakes: P1
Apr26

Its wise to learn from other’s mistakes: P1

Since the dawn of Software development, It has been a tedious job to avoid technical mistakes. Developers being human can commit  mistakes. By sharing these few mistakes we as a developer make sure that we are learning and helping others avoid such problems. This is PART 1 in the series of blogs Part 2  & Part 3 I am writing to explain few of my mistakes, blunders or stupidity which I have committed in some of my projects. The mistakes were committed in different roles as a Developer or Consultant or Administrator. Reader is expected to have some prior knowledge of Salesforce so that this blog make some sense. It will be great if you have an understanding of how the various components are developed in Salesforce. A Salesforce Administrator or Developer is surely going to appreciate this blog. Sometimes Even a Simplest Job Can Be Difficult: Automated Send Email FROM Address STORY: We had worked on a small project which was related to a survey conducted by our end client. This Survey was supposed to receive information from already registered users on Salesforce communities and information was to be stored in a  Salesforce object. Once a particular User submits his/her information they should be able to receive a confirmation e-mail back. With this requirement in hand we started the development in salesforce sandbox. We were responsible for end to end development, testing and deployment.  We were able to record of the information being entered by a registered user in Salesforce and e-mails were also been send out back confirming the survey information was being successfully submitted in Salesforce. Everything was working as expected  in testing and in the deployment phase we moved the components to production. MISTAKE: Once everything was live and users were filling up the forms we discovered a mistake. One of the users who have filled in the form and received the confirmation email had replied back to that email. The reply was recieved in my inbox rather than the Client’s support email. Then we quickly did some testing and discovered that registered users were receiving the confirmation e-mail from the developer’s Email ID rather than Client’s support email. So the mistake was that We forgot to update the e-mail sent from the clients registered support e-mail All the registered users were receiving email from Salesforce and with the developer’s email in CC. LESSON LEARNED: We should always use the end client’s email for FROM address under Salesforce Email Administration > Organization-Wide Email Addresses for development, testing and deployment.     Email Rainfall Everywhere: Email Delivery Testing STORY: We had recently developed Salesforce communities for our Client...

Read More