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
Salesforce Advance Administrator Notes (Report)
May13

Salesforce Advance Administrator Notes (Report)

Reports Report types and how they’re used: Tabular reports are the simplest and fastest way to return your data in a simple list view format. Keep in mind that tabular reports can’t be used to create dashboard components. Summary reports return your data with subtotals and other summary-level information. Summary reports are great for showing average dollar values for closed won opportunities by salesperson or number of cases by status by support representative. Matrix reports show data summaries against both horizontal and vertical criteria; for example, total sales per sales rep per year by quarter. Joined report format lets you view different types of information in a single report. A joined report can contain data from multiple standard or custom report types. Custom Report Types A report type defines the set of records and fields available to a report based on the relationships between a primary object and its related objects. Reports display only records that meet the criteria defined in the report type. You can create custom report types from which users can report on your organization’s reports and dashboards. When defining a custom report type, select Reports or Dashboards from the Primary Object drop-down list on the New Custom Report Type page. Choose the primary object your new report type will support, then give it a name and a useful description. Mark it as “in development” until you’re ready to make it available for users to create reports.   1.     Report Type2.     Report Name   You can choose from all objects—even those you don’t have permission to view. This lets you build report types for a variety of users. Once you save a report type, you can’t change the primary object. If the primary object on a report type is a custom object, and the custom object is deleted, then the report type and any reports created from it are automatically deleted. If you remove an object from a report type, all references to that object and its associated objects are automatically removed from reports and dashboards based on that type. A custom report type’s Deployment Status changes from Deployed to In Development if its primary object is a custom object whose Deployment Status similarly changes. A developer can edit a custom report type in a managed package after it is released, and add new fields. Subscribers automatically receive these changes when they install a new version of the managed package. However, developers can’t remove objects or fields from the report type once the package is released. When you delete a custom report type, any reports based on it are also deleted. Any dashboard components created from a report based on a deleted custom report type display an error...

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 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, Opportunity Line Items,...

Read More