toolkit

  • Cutting the Clutter: Maintaining a Clean Salesforce Org

    Maintaining a clean Salesforce org, doesn’t need to be a battle. Recently, I was watching a great webinar by Kelly & Leanne entitled ‘Cut that Clutter‘. And it got me thinking about how the problems faced by a cluttered Salesforce, and how it can easily consume an Admin’s time and effort. And it not only affects us as Admins, but also our end users! So in this post I am going to recap some of the awesome tips shared in this webinar, and also see offer some additional FREE tools to tackle the problem that so many of us face!

    The War Against Clutter

    Ok, ok. I admit that this header is full of hyperbole.

    Maintaining a Clean Salsforce, shouldn't be a battle...
    Don’t raise the white flag, in the war against clutter!

    But a cluttered Salesforce creates a lot of frustration and anxiety for me. And I assume most it does for most of you reading this too! My personal vendetta against clutter drives me to ensure I am always improving the org for my end-users…

    I have previously written about how we started to tame the Technical Debt beast haunting our primary orgs and removed over 2 million records from an org (hint: very manually).

    But there is still so much to do…

    It is a seemingly never-ending fight. But as Admin’s we are always looking for tools and resources to help us in our day to day Admin Superhero duties. And to help us in maintaining a clean Salesforce org…

    Cut that Clutter! – The Recap

    Now before we get much further. If you have a spare 30mins I strongly recommend that you watch the webinar as I am only going to briefly summarise it here…

    The session covers the Three-S’s. These are the primary areas to focus on, to ensure your CRM is kept in tip-top shape.

    • Security – making sure you know who can see what in your CRM
    • Structure – does the setup of Salesforce ensure data security and meet any data governance requirements
    • Strategy – how to plan and scale while ensuring you don’t have to keep doing ‘big clean-ups’ each year

    If you want to hear more, then please check out the video.

    Cut that Clutter: Resources mentioned

    Next up, the ladies mentioned some great tools to help you in maintaining your Salesforce org.

    From Salesforce:

    • Salesforce Optimizer (aka Optimiser in non-US/Canada countries ūüôā ) – I am in LOVE with Optimizer reports. It is such an amazing tool to help you analyse and understand where the Technical Debt is likely to be hiding within your org. This should be your first port of call, in maintaining a clean Salesforce. That is how much I love it!
    • Security Health Check – helps you understand any vulnerabilities you may have within your Salesforce. This covers areas like Password Policies, Critical Updates, etc.

    From AppExchange:

    • Field Trip – this tool is one I install in every org I have managed now for a number of years!! It is a great tool to help analyse and understand just which fields are being populated and used by your end users. It is worth noting, that if you have a field that is always updated automatically by a trigger/workflow… Then it will obviously show as being used, even if that trigger/workflow update isn’t actually required. But overall it will help you understand your org in very tangible way.
    • The Permissioner – can help you when mass assigning/removing Permission Sets from your users.

    From Trailhead:

    Additionally the ladies have set up an Admin Trailmix.

    This covers a number of modules covering: Salesforce Profiles/Permission Sets, User Authentication, Data Quality, Data Management and finally Reporting & Dashboards.

    Help with maintaining a clean Salesforce org

    Extra, extra! Two more tools to add to your Salesforce Cleaning toolkit…

    Now for the bonus round.

    There are always so many tools and ideas out there helping admins when maintaining a clean Salesforce org. And I am only skimming the surface with these next two tools…

    Compare Permission Sets & Profiles

    When watching the webinar, albeit not live, I started shouting at my screen.

    During the Security section, there was a point around Profiles/Permission Sets. As an admin it is a mammoth task to compare all profiles/permission sets and what they might grant access to within your org. This can be kryptonite to Salesforce Superadmins…

    There was a recommendation to switch off Enhanced Profile View, and then compare the permissions… But why do that? Especially, when there is a secret weapon at your disposal?

    Perm Comparator by John Brock is that secret weapon!

    Seriously… More people need to know about this tool! And I am not even on commission! ūüôā

    Stop duplicates in their tracks…

    Salesforce hasn’t always been an admin’s best friend when it came to cleaning an org…And without getting all ‘back in my day’-ish…

    But there was a time Optimizer, Security Health Check and those tools simply didn’t exist.

    There was also a time Salesforce didn’t have an easy way to prevent duplicates… Admins had to either buy other tools to identify and manage duplicates, or create complex formulas and validation rules to try and prevent exact match duplicates.

    But when planning your strategy for maintaining a clean Salesforce, you should investigate the in-built duplicate management tools from Salesforce.

    After all, what good is cleaning up your security (profiles, access policies, passwords) and clearing out fields you don’t use any more – if your end users are still swimming in duplicate records?!

    The in-built feature will take care of the basics, but depending on your use case, there may still be a reason to buy a tool like Cloudingo or DemandTools (just to name a few).

    What is in your toolkit?

    De-cluttering your Salesforce can be so rewarding!
    De-cluttering can be so rewarding!

    As I mentioned I only skimmed the surface here… And this is a topic I can (and will likely) write more about in the future. I have rambled more than enough for now…

    So to wrap up the post, feel free to add any other suggestions or recommendations for your ‘Cleaning Salesforce Toolkit’ into the comments section below.

  • Secrets of Spring ’18: Hidden Formulas

    Spring ’18 is now live for most orgs, but there appears to be some changes included in the release which haven’t been documented :-O The great news for us Admins, the changes actually resolve a number of ‘simple’ problems we have when trying to calculate values in formulas.¬† So in this quick update we look at some of the new ‘hidden formulas’ included with Spring ’18 and some of the use cases where you might be able to apply them…

    Update: 26/Feb¬† – Eagle-eyed Ekaterina has pointed out in the comments, there are even more additional formulas available!¬† Here is a link to her blog if you want to read more…

    Update: 01/Mar – Salesforce have now scheduled an update to the Known Issue and scheduled an update via the Spring ’18 Patch 11.0.¬† To see what’s included, click here.

    Hidden Formulas: ADDMONTHS

    The first of the hidden formulas included in Spring ’18 is the new AddMonths function.

    Imagine you need a formula to calculate a date, which based off another date entered on a record.  For example, you could see this in action in Contract End Date (contract start date + 2mth duration = contract end date).

    The formula to add 2 months, while only using point and click Admin features, is quite little long winded (if you want to accurately account for Leap Years):

    IF(
      MOD( MONTH( date ) + 2, 12 ) = 2,
      IF(
        DAY( date ) > 28,
        DATE( YEAR( date ) + FLOOR( ( MONTH( date ) + 2 ) / 12 ), 3, 1 ),
        DATE( YEAR( date ) + FLOOR( ( MONTH( date ) + 2 ) / 12 ), 2, DAY( date ) )
      ),
      IF(
        OR(
          MOD( MONTH( date ) + 2, 12 ) = 4,
          MOD( MONTH( date ) + 2, 12 ) = 6,
          MOD( MONTH( date ) + 2, 12 ) = 9,
          MOD( MONTH( date ) + 2, 12 ) = 11
        ),
        IF(
          DAY( date ) > 30,
          DATE( YEAR( date ) + FLOOR( ( MONTH(  date  ) + 2 ) / 12 ),
           MOD( MONTH( date ) + 2, 12 ) + 1, 1 ),
          DATE( YEAR( date ) + FLOOR( ( MONTH( date ) + 2 ) / 12 ),
           MOD( MONTH( date ) + 2, 12), DAY( date ) )
        ),
        IF(
          MOD( MONTH( date ) + 2, 12 ) = 0,
          DATE( YEAR( date ) + FLOOR( ( MONTH( date ) + 2 ) / 12 ) - 1, 12, DAY( date ) ),
          DATE( YEAR( date ) + FLOOR( ( MONTH( date ) + 2 ) / 12 ),
           MOD( MONTH( date ) + 2, 12), DAY( date ) )
        )
      )
    )

    GULP!!

    But, now you will be able to use the AddMonths formula…

    So you want to add 2 months, to a field containing the start date of the contract, it is now as simple as:

    addMonths(date, 2)

    To see more details, until the official documentation is available, visit Ekaterina’s post¬†here.

    Hidden Formulas: WEEKDAY

    Salesforce WEEKDAY formula
    Salesforce WEEKDAY formula

    Also in Spring ’18, and a little more obscure, is the new WeekDay function.

    It allows you to return a number (from 1-7) which indicates the day of the week, based on a date field within Salesforce.

    Before, once again, you could retrieve this information – but it was again a bit cumbersome:

    CASE(
      MOD( DATEVALUE(CreatedDate) - DATE(1900, 1, 7), 7), 
         0, "Sunday", 
         1, "Monday",  
         2, "Tuesday", 
         3, "Wednesday", 
         4, "Thursday", 
         5, "Friday", 
         6, "Saturday",
         "Error"
    )

    But now – simply use:

    WeekDay(date)

    And it will return for you, a number which represents the day of the week:

    1 = Sunday
    2 = Monday
    3 = Tuesday
    4 = Wednesday
    5 = Thursday
    6 = Friday
    7 = Saturday

    Hidden Formulas: CURRENCYRATE

     

    Salesforce CURRENCYRATE formula
    Salesforce CURRENCYRATE formula

    The next hidden formula in Spring ’18, is CURRENCYRATE.

     

    This formula will return the conversion rate used for a record’s currency code.

    So for example, if you have the default currency as USD.¬† But the record’s currency is GBP – you can now retrieve what the conversion rate is between those currencies.¬† And then display it as a formula field or use it in reports.

    CURRENCYRATE(IsoCode)

    As a possibly obvious tip, Currency Management will need to be activate in your org before you can use this…

    The returned value will be a number showing the currency conversion rate, eg 0.717412 (but you will be able to control how many decimals are shown).

    Hidden Formulas: MFLOOR & MCEILING

    Salesforce MCEILING formula
    Salesforce MCEILING formula

    These two final formula functions go hand in¬†hand.¬† And now also available in Spring ’18!!

    Previously, we did have access to ROUND function:

    Round(decimalNumber, 2)

    Where you could round a decimal number to the number of decimals you specified in the formula.¬† But you couldn’t force Salesforce to round up or down… Until now!

    MCEILING will round a number up to the nearest positive whole number.  Whereas the MFLOOR will round down to the nearest positive whole number.

    Both functions will return 0, if the input number is a negative.

    So for example, if you have a number field which contains decimals but you want to round up or down, you can control this with these functions.

    To round up, to nearest whole number:

    MCEILING(number)

    To round down, to nearest whole number:

    MFLOOR(number)

     

    Found any others?

    No doubt Salesforce will be updating all relevant documentation and the Help site soon.  But if you have found any others, add them to the comments below!

  • Spring ’18 Deep Dive: GDPR Features

    Simple put, GDPR is inescapable for those dealing with individuals within the EU.¬† In the last post¬†we took a look at what GDPR is and how to start preparing for it.¬† Additionally, within the next month we also have Spring ’18 release going live.¬† So the good news is there is a number of GDPR features included to assist Admins prepare…

    Recap: What is GDPR?

    General Data Protection Regulation, otherwise known as GDPR, is the new privacy regulation coming into force in 2018.  It will replace the EU’s previous Data Protection Directive, and align privacy laws and regulations across all EU member states.

    Part of the GDPR is the retention and removal processes re: personal data after a period of time.  Companies should only retain personal data for as long as needed.  So for example, if you have contact details of a person which is linked to contract data you may need to retain it for 7 years.  Versus simply having a contact on a mailing list, retaining the data for this long may not be justifiable.

    For more details, take a look at my last post for the what/when/how of GDPR.

    GDPR: Be Prepared

    GDPR is ultimately an update to a number of data/privacy regulations across the EU.  But the easiest place to start for most companies is to map out and understand the following: 

    • where your data comes from. (eg web-to-lead, email-to-case, data.com, users entering in the data),
    • how it gets used/stored. (eg are there integrations which also use the data, is it stored outside of Salesforce, are records stored in standard and custom objects within Salesforce),
    • what business processes which clean up or remove data. (ie how long does your company need hold onto personal data for (and for what purpose)? Is there already a process to remove personal data?)

    Once you understand there where, how and what of your data, you will then understand where the following features and changes may help and support you.

    Spring ’18 & GDPR Features

    Salesforce Data Privacy Record - aka Individual Record
    A sample Salesforce Data Privacy Record – aka Individual Record in Spring ’18 Preview Sandbox¬†(click to view full image)

    Data Privacy Records (aka Individuals)

    Spring ’18 release brings with it a new setting under Company Profile within Setup.¬† The setting to enable¬†Data Protection and Privacy, will expose the new object ‘Individuals’ within your org.

    This new object connects to either a contact or lead record within Salesforce to store data privacy settings for that person.¬†So for example you can store the customer’s preference re: soliciting products and services.

    A key note here is that in the preview instances of Spring ’18, Individuals it isn’t treated like other objects and doesn’t have a standard tab available to access the object.

    But a gentle word to note before we go through how to set this up.¬† As with any changes to a production system, it will require planning before¬†setting this up to ensure it works for your processes.¬† A number of these changes below may also require assistance from a developer or changes to your marketing platform via API.¬† This is not entirely a point and click setup…

    1. Activate the feature within Setup

    Lightning: Setup -> Company Settings -> Data Protection and Privacy
    Classic: Setup -> Company Profile -> Data Protection and Privacy

    This will expose the new Individual object, with the standard fields within your org.  Most of these fields are created for the purpose of tracking opt-out requests and personal preferences.

    Some examples include:

    If a contact opts-out of geo-location tracking, you can store that preference here.

    You can even store the D.O.B of the person and indicate if they are considered a minor or not.  (You might need to do this as minors carry different standards for elements like data retention under GDPR.)

    And good news is you can also add custom fields to this object if you wish to.

    2. Update Page Layouts

    Add field to relevant page layouts on contact & lead objects.¬† Salesforce also suggests to rename the field label from ‘Individual’ to something more meaningful to your users.

    3. Existing Contacts/Lead Records

    There is a code-based solution to create data privacy records for existing contacts & leads within your Salesforce, which also includes code for handling person accounts.

    I won’t go through the code here.¬† But if you are interested, you can take a sample of the code¬†here.¬† Remember you will need to execute this somehow (ie start the code running), so you may need help from a developer friend(s).

    4. New / Changes to Preferences

    Finally, you will also need to plan how new records get managed within Salesforce.

    Will an Individual record be created when a contact or lead is created?  What about field updates / etc?  Do you do this via a trigger in Salesforce or via API from your email platform?

    And what do you get at the end of this?¬† A new record of course … ūüôā

     

    bad data quality ahead

    Data Quality & Duplicate Jobs

    GDPR features in Spring also come in the form of expanded functionality.¬† Spring ’18 release provides an update for its out-of-the-box duplicate management to allow Admins to run a duplicate job.

    Previously matching rules would run when a record was being added or updated by a user.  This would then either alert the user or block the user, depending on how the Admin had set it up.

    But in Spring ’18 release, us Admins can now run a “Duplicate Job“.¬† This allows you to use (or create) a matching rule and then run a search within Salesforce to find duplicates.¬† Once a Duplicate Job completes, you will be able to take action by comparing and merging records, right from the summary page.

    Duplicate Job within Spring 18 release
    Duplicate Job within Spring 18 release.

    Changes to Web to Case and Web to Lead

    Spring ’18 release also brings another¬†GDPR feature.¬† This time there is a slight update to how failed Web-to-Case and Web-to-Lead emails are handled.

    When a Web-to-Case and Web-to-Lead fails an email is generated automatically to advise.  This email will no longer include any personal data inserted by a third-party application.

    Data.com for UK/Ireland Contacts

    This only impacts users who are using Data.com Prospector or Clean.

    Data relating to contacts stored within Data.com Connect (only UK & Ireland) will now be removed from the Connect database.

    Also the Clean Status field on a Contact/Lead records will be changed to ‘Not Found’.

    Wrap Up

    As you can see there is a lot to cover, and Salesforce is enabling businesses to become GDPR compliant with all the GDPR features in Spring ’18.¬† There is still more to read in the Release Notes for Spring ’18 if you are using other tools like Pardot, Inbox or a developer (specifically around Event Logs).

    There is support at hand, and if you haven’t already I would strongly recommend completing the Trailhead modules setup for GDPR¬†Basics (and there is also a trail for US Privacy Basics too).

    Additionally Salesforce has a new section in the Help for Data Protection & Privacy.

    And finally there is a basic scenario guide, which looks at a number of common requests and suggested actions/things to consider to be compliant under the various privacy laws (including GPDR).

  • Dreamforce ’17: roundup

    Were you fortunate enough to head to this year’s Dreamforce?¬† If not, have you caught up on all the new goodies that were announced?¬† If you are like me and couldn’t attend, we have to catch up on all the new announcements from this session via Youtube, Facebook,¬† Linkedin and other blogs.

    So to help out, below is an overview of some of the resources I have found useful to catch-up on all things Dreamforce 2017, and feel free to add your comments & own resources in the comments section at the bottom of the post.

    Fourth Industrial Revolution

    The key theme this year was around the 4th industrial revolution.

    And it contains a key message about the impacts on the impacts this next digital revolution will have on society, from AI and the workplace of the future, to how we treat each other…

     

    Dreamforce 2017: over 3200 sessions of learnings!

    If you have been fortunate enough to attend Dreamforce, the scale is massive.  It literally takes over San Francisco for a week and brings together people from so many different backgrounds to learn and network.

    But where to start though?¬† Catching up on everything is a mammoth task and with over 3200+ sessions, there is so much for people to catchup on.¬† New use cases and successes shared with the Salesforce community… It is what Dreamforce is all about!¬† That is why no two wrap-ups will be the same, as everyone has there own personal journey through the week.

    But key highlights for me include Salesforceben with two great posts stand out for me: Admin perspective or Nov roundup) and Jen Lee’s¬†fantastic recap and her sessions about process automation and workflows.¬† Also David from SFDC99 has a great recap too.

    Salesforce has the videos published from most of their keynotes and a number of the larger sessions from the week, and you can access them on the Salesforce Youtube playlist.

    Key Youtube videos I have found useful include:

    And personally, I love the T-Mobile story at this year’s keynote, where they demonstrated a number of the new ‘mySalesforce’ features (such as my Trailhead, my Lightning and my Einstein).¬† You can catch that session including a live demo here:

     

    The future roadmap of Salesforce core platforms

    One session I always try to catch up on is the core platform update/roadmap sessions.  This next session has a number of the Product Owners talking about some of the features that are coming up over the next few releases.

    Want a crystal ball into Salesforce’s thinking and where they are focusing their efforts? Look no further.

    They also go into the Ideas Exchange, why some ideas can’t/haven’t been delivered so far (even though they might seem really simple from the outside looking in), and how Lightning is actually allowing Salesforce to drive the pace of delivery of new ideas that Classic simply couldn’t do…

    So without further ado, here is the True to the Core overview from Parker Harris and co…

    The future roadmap of Salesforce’s core products definitely looks promising and personally I can’t wait for the discussed improvements to reports & dashboards (Sub folders… Field to field filters?!¬† OMG)

    Comments always welcome

    Got any key videos / blogs / resources you have used to catch up on Dreamforce this year?  Share in the comments below.

  • Cleaning a Salesforce Org

    Data is such a big focus for anyone working with a CRM, Salesforce is no exception.  Previously we looked at migrating data into Salesforce.  But what happens when you need to remove data?  Cleaning a Salesforce org can present a few challenges.

    Say you need to clean your Salesforce org and delete/archive, because… ¬†you might have gone over your Salesforce data allowance?

    This is what happened to us recently.  One of the orgs my team manages went over its allocated Data Space, and we started getting emails / calls from Salesforce to remind us that we have used up our allowance.

    We had a choice, buy more storage (at Salesforce’s very inflated data prices). ¬†I mean c’mon it is 2017, 1TB with Dropbox/Google/Onedrive/etc is only around $100/year…

    As you can probably guess, this wasn’t our “go to” option, so we had to find out what we had in Salesforce vs what we needed, and then make a decision…

    (c) Dilbert

    Legacy org & technical debt

    The org in question was what I deem a “legacy org”, and has had presented a few challenges over the years. ¬†It has been an active Salesforce org since 2003. And without constant love and attention has built up so much technical debt because it was never actively managed/improved/developed…

    Even relatively simple things like enabling and rolling out Chatter were never done – even years after Chatter launched.

    Clean Your Salesforce Org: a balloon waiting to burst
    Clean Your Salesforce Org: Our org was a balloon waiting to burst

    As the company has grown, obviously so has the data stored within the org.

    Add into the mix that new apps installed in the org which have driven a sudden increase in the volumes of records being created (eg telephony integration and training people to log calls).  And hey-presto data storage & how we are using it is suddenly a priority.

    Where is the data?

    For an org which has grown from around 50-100 people in 2003, and a very simple business processes.  The question was how could we be using up out data storage suddenly?

    Why now?  How do we get to the bottom of what is happening?

    Admittedly it wasn’t something we had kept an eye on. ¬†So the first port of call was the setup menu.

    As you might know Salesforce offer a section in the Setup menu called ‘Storage Usage’, which is quite basic but gives you a snapshot of where your data and file storage is used. ¬†To use it, go to Setup -> in Quick Find, and search for ‘Storage Usage’.

    Boom, there it was.

    The org with over 23,000,000 records…

    The org had ballooned to over 23,000,000 records.  Shocking as our number of accounts are a fraction of that overall volume.

    What was even more shocking for us was that it was two objects consuming almost 70% of the total storage!

    Salesforce Data Storage
    Yes those numbers are real… We needed to clean our Salesforce org!

    The two objects in question: Tasks & Email Messages…

    <sarcasm> Oh joy! </sarcasm>

    Not all objects are equal

    Why was I so *not* excited that it was Tasks & Email Messages using up our storage?

    Salesforce Tasks & Archiving

    Activities in Salesforce have a unique feature which means they get archived by Salesforce after a set number of days.  This is typically around 365 days of being closed (but there are a few caveats to that), and can also be extended if you request it from Salesforce.

    This is an issue, as once archived you can no longer use the standard Salesforce reporting to analyse.

    And due to the sheer volume of records (over 12,500,000), it was even crashing Dataloader/Workbench/Developer Console when trying to export the data.

    When I did manage to get the export, by trying to filter by created year, the file was still too big to view in Excel.  Also we were limited to just Excel, which meant we hit a brick wall.

    Email to Case & Email Messages

    data storageThis org heavily relies on Email-to-Case.  And when received, the email is stored in the EmailMessage object.

    Additionally all auto-response emails are also saved against the case, in addition to any replies from the customer.

    Great for keeping track of all communication.  But once again creates some difficulties when trying to report and analyse.

    Also as an email gets saved against a case, it also creates a task.  So we end up with a sort of duplication, with a task and an email message created and linked to the same case.

    Getting the data out of Salesforce

    In the end we contacted Salesforce Support, as we couldn’t use normal methods to export and clean the data.

    The only suggestion that Salesforce could provide was to schedule a data export of the objects we wanted to export and analyse. ¬†Simple enough…

    Anyone who has used this feature will know the output of this is zip files, which contain CSV files inside.  Great it was going to be small enough to work with!

    CSV SplitterNope… Each CSV was still over 1,000,000 rows.

    Excel still was too unusable to analyse the data.  At this point I really was wishing for something like Access/MySQL to load the files into.

    Enter CSVSplitter, a really simple tool that allowed us to split the CSV files down into smaller more manageable chunks.

    Once they were broken into the smaller files, then we were able to start analysing the tasks.

    Analysing the data

    Inspector Gadget time!
    Inspector Gadget time!

    The road to cleaning a Salesforce org is paved with lots of data to analyse!

    You need to understand what you have, before you can understand what you need.

    So we started analysing the data.  And we dissected the data in many different ways to understand what was driving the volume we were seeing.

    We looked at tasks created by month and year.  Were there specific users who created more than others?  Were there common subject lines Рwhich might point to auto-generated tasks.

    Our Salesforce, had never ever been cleaned.  And we have used tasks in the past to drive system automation within the business.  So where relevant, these records could go!

    Archiving the data

    So we had analysed the data, now to archive it somewhere in case we actually needed to reverse the process. (FYI – while researching this post, I found this useful guide to creating a Archiving Policy for your company).

    Though storing the records outside of Salesforce and then trying to restore in the case of a profile would be painful if we had to.  But at least we had a fall back plan, and if needed the business could still use in reports.

    In addition a lot of care was taken in being conservative with what we are removing and working with various stakeholders to ensure the different departments were on board with our plan.

    Now we could start the actual cleanup!

    Cleaning a Salesforce Org: 2,600,000 records deleted (so far)…

    I have to admit, this part ended up actually feeling strangely cathartic.

    Being able to delete over 2.6 million records from an org was also a first for me ūüôā

    We essentially identified the records to be deleted, creating a CSV file of the IDs of the records we wanted to delete, and then use Dataloader to remove the record.

    Once we started with the tasks, we were able to then also move on to other records and start an overall clean out of Salesforce. ¬†Opportunities, Accounts, Cases… All are now in scope and we have created a data clean-up roadmap and are making great headway.

    We have a long way to go still, but at least we can start to let go of the legacy data past.

    And most importantly, make Salesforce a focused CRM for the sales and customer service teams, so it is easier for them to use.

    Salesforce Data Storage - Before
    Still a long way to go… But we shall prevail!

     

    Got your own ‘lesson learned’? ¬†Share your tips…

    I have worked in org’s where hitting the data storage limit was expected and almost required. ¬†As we deployed tools like FinancialForce which create a lot of records (and they need to). ¬†So we simply bought more data. ¬†But it really depends on your scenario, as every orgs needs are a little different.

    Have you been in a similar situation?  How did you decide what to archive?  Did you use any specific tools to help you?

    As part of this issue, we were able to make a business case for getting tools like DemandTools (paid app).

    And I am currently investigating Passage Tech’s ‘Storage Helper‘ and ‘Rollup Helper‘ (both have a limited free version) to see if they can help profile accounts to then identify what records can still be removed and archived from Salesforce. ¬†But I will save the details for another post later ūüėČ

  • Data migration tips to save you time!

    So we are almost ready to go.  In this data migration series, we have already looked at how to migrate data and some tools to help with the migration.  But now for the fun part, I want to share with you some data migration tips to help make your migration into Salesforce as smooth as possible.

    Let’s jump right on in, and please share any of your own tips in the comments section below.

     

    Data Migration Tip #1: External IDs & Upserts

    Let’s walk through a common scenario in a data migration…

    The Data Migration nightmare:

    Data Migration can be like a mirror maze
    Too many spreadsheets? Where to go next?

    You are about to migrate 12 different objects into Salesforce, everything from Accounts, Contacts and Tasks through to Opportunities, Cases and a number of custom objects you have created in your org.

    How do you create these records in Salesforce, and still have all related records end up linked together?

    Do you insert the first object (let’s say Accounts). ¬†Because you need to link the Contacts to those Accounts, in the second file do you use Excel to create the link? ¬†Do you take the import file from Dataloader, run a VLOOKUP in the Contacts file and then pull in the related Account IDs? ¬†YUCK! ¬†Now imagine having to repeat that process for all 12 objects…

    I have been there myself.  And when it is a very large migration it can become extremely difficult to track and manage all the spreadsheets.  Especially when you are working with live data, that is always changing and is never static.

    This scenario can be the nightmare of any data migration but it doesn’t need to be. ¬†#NoMoreVLOOKUPS

     

    Salesforce External IDs:

    As you know, each Salesforce record is given a unique 15/18 character ID.  That is great, if you are only dealing with data in a single system or Salesforce org.

    But what happens when you are need to store the ID of a record, that is actually sourced from a system outside of your Salesforce?  For example an ID from an invoicing system like SAP or Oracle.

    Setting up an External ID

    This is where External IDs come into the picture.

    By configuring a field to be an External ID you can then use it to store the original reference/ID from the other system.  Additionally, you can also use it to prevent duplication within Salesforce by setting the External ID field to unique.

    It is this ‘uniqueness’ that helps us out when migrating bulk data into Salesforce. ¬†As Salesforce will automatically index the External IDs, allowing you to use this as a reference when doing an Upsert within Dataloader.

     

    #NoMoreVLOOKUPS: Upserts with External IDs:

    Now let’s take a quick look at Upsert within Dataloader. ¬†Upsert¬†combines the ability to either Insert/Update records while using a single file. ¬†However, using Upsert in Dataloader also gives you access to a few extra features.

    Apex Datalodaer: vital tool to help in a Salesforce Data Migration

     

    After you click Upsert and start going through the Import Wizard, you will get the ability to select either the Salesforce ID or an External ID (if available on the object).

    Additionally, for any relationship you have on the object, Dataloader will also prompt you to select the applicable ID fields which is also referenced in our import file.

    This is how you avoid using VLOOKUPs!  

    By populating an External ID, on each record you load into Salesforce you can then use this to get Salesforce to do the lookup for you. ¬†Even if you don’t actually have an External ID from another system, you can create your own. ¬†Just make sure it is unique for each record.

    I know this is a¬†little confronting to start with. ¬†It took me a little while to wrap my head around just how exactly to do this when I ran my first data migration. ¬†However Upsert & External IDs can save you so much time, I strongly recommend you practice and learn how to use this ‘double act’ to your advantage ūüôā

    There is of course more resources available on this topic.  Salesforce Help has an article which gives you a step by step process you can follow.  I also found a video series on YouTube by Doug Ayers, which really breaks this down over an informative video tutorial.

     

    Data Migration Tip #2: Update System Audit Fields (Salesforce‚Äôs ‚Äėhidden’ trick)

    In Salesforce, every record has a number of system date fields which typically can‚Äôt be edited.¬† Fields like ‚ÄėCreated Date‚Äô, ‚ÄėCreated By‚Äô, ‚ÄėLast Modified Date‚Äô and ‚ÄėLast Modified By‚Äô are locked down (and for good reason!)

    data migration 'hidden' toolbox
    Just like Maxwell Smart, you too can have access to a hidden toolkit of goodies

    These are your standard audit fields and are very important when tracking a record‚Äôs history.¬† While planning a data migration, you might come to realise that you need to retain this information from the previous data source.¬† And that is where the permission ‘Update System Audit Fields’ comes into the story.

    Imagine a sales person’s activity report, which is displays only activities created in this quarter.  As such after a data migration is complete, you still want your users to run these reports.  So what can you do?!

    In the past, being able to edit these fields was part of what I called the ‚Äėhidden Salesforce toolkit‚Äô. ¬†You know the list of things that Salesforce can do, but they don’t really publicise? Like increasing the cheeky workflow limit here or there… ¬†But all part of the Salesforce Support toolkit, but you had to ask for it to be enabled in your org first. ¬†The problem was, you had to know them in the first place you could even ask, so that you could get it requested to be turned on!

    Winter ’16 Release & Update System Audit Fields

    In Winter ‚Äô16 Salesforce made a number of these ‚Äėhidden‚Äô features publicly available.¬† And with a few clicks you can now enable it easily for your data migration.

    There are a few considerations to look at before you enable the ability to update the System Audit Fields, so check them out here.

    And then head over to here, for instructions on how to setup and enable this feature in your org!

    The biggest point I will highlight about accessing these fields, is that they are only available on record creation via Dataloader. ¬†Meaning you can’t insert a record and then try to update the created date on it separately. ¬†If you did try to edit/update these fields after a record has been created you will get an error.

     

    Data Migration Tip #3: Automation Anchors

    Automation with Salesforce is fantastic.  Admins and Developers have access to a wide array of automation tools within most Salesforce orgs, including Process Builder, Triggers, Workflows, Sharing Rules.  But when you are migrating data, they can quickly become an anchor.

    Automation Anchors, can slow you down unnecessarily
    Automation Anchors, can slow you down unnecessarily

    What do I mean by that?  Do you know what automation will fire off based on the data work you are doing?  For example, is there a workflow that will send an email alert to another team, or even the customer directly?  Is this what you expect to happen, if so that is OK.  But you do need to make sure you know what any data you load or update into the system will do to the existing automated processes in your org.

    In addition, automation in Salesforce can end up adding extra time to any data insert, update or upserts.  Remember even deletion of records can fire off a trigger!  When you are moving or manipulating a bulk volume of records, this time can easily add up.  Complex sharing rules might really slow down an insert/update of records.  And depending on the volume of data you are working with, you of may end up hitting some of Salesforce processing limits.

    So before doing any data migration, test and make sure the automation you expect to work does.  Otherwise see if you can deactivate the workflow while you are doing the migration.

     

    Share your tips

    This is by no means a definitive list, and there is plenty more to come.  But in the meantime, please share your own experiences or tips in the comments section below!

    Happy migrating!

  • Tools for a successful Salesforce Data Migration

    Everyone loves data!  In my last post I shared with you was some thoughts on how to make sure a data migration goes smoothly.  There is a treasure trove of tools out there that can help you with any Salesforce Data Migration (more than I can put in this single post!).

    In this post, I am going to share some of the most popular tools to help you out with any Salesforce Data Migration, and best of all they are all free!

     

    Tools to help you create & edit records in bulk

    Salesforce has a good data import wizard which can guide you through basic record inserts, like when you need to create a bunch of new accounts/contacts.  But what happens when you need more power?

    First thing is first, the tools below will respect any object/admin permissions you have within Salesforce org. ¬†Meaning if you don’t have access to create records on a certain object, you won’t be able to create records via one of these tools.

    Apex Datalodaer: vital tool to help in a Salesforce Data Migration

    1) Dataloader

    This is a tool developed by Salesforce themselves.  Once installed on your PC, you have a powerful tool to help you to migrate or update data in Salesforce.  The interface itself is a bit basic, but it is relatively straightforward to use and allows you to either Insert, Update, Upsert, Delete and Export records from any object in Salesforce that is available via the API.

    Most of the features of Dataloader are available through a simple user interface, but if you want to unleash even more power there is also an advanced option allowing you to use a command line interface.

    It is worth mentioning that Apex Dataloader only supports .CSV files.  So if you have Excel/Google Docs, make sure you save the file as a .CSV file before starting your Salesforce data migration!

    Final thing to point out, this tool uses SOAP API, which means you need to be on Enterprise, Unlimited or Performance Editions of Salesforce.

    To get it, once logged into Salesforce, go to Setup -> Data Management -> Data Loader.   Once there you have options to download the installation file for Windows or Mac.

    To read more about Dataloader, click here.

     

    Jitterbit Data Loader: free tool to help you with Salesforce Data Migration
    Jitterbit Data Loader: allows more than just CSV files to be used

    2) Jitterbit Data Loader

    This is a tool is similar to Apex Dataloader in most regards.  The basics are relatively similar Рyou can still Insert, Update, Upsert, Delete records though has a few extra tricks up its sleeve!

    First up Jitterbit’s tool supports more versions of Salesforce, with Group Edition the minimum requirement! ¬†Meaning many more people can use this tool versus Apex Dataloader.

    Secondly, this tool supports more than just CSV files, it works with any flat file or even a database connection for the more advanced users out there.

    You can also perform basic transformations with your data on the fly, and link your configuration settings to the Jitterbit Cloud.

    It also has a relatively simple point and click interface with a helpful wizard to guide you through the steps. ¬†Where to get it? ¬†Head on over to Jitterbit’s website¬†to register, download and install.

    3) Field Trip

    Field Trip - field completion report
    A report based off Field Trip

    In my last post, I made reference to making sure you understand the data you are migrating.  Question, analyse, question and repeat!

    Field Trip is a free tool available on the AppExchange, which helps you understand the data completion rates already in Salesforce.

    Why is this helpful? You can view which fields actually contain data, represented as a percentage across the entire data set within an object.  This is very handy if you are looking at removing technical debt within your org, or trying to understand what fields are most used.

    Imagine you are reporting on the Account table. ¬†A field that has 100% completion rate means every single record has a value in that field. ¬†This enables you to then analyse the fields that are most used and ignore the fields which aren’t.

     

    Go forth and migrate!

    We are only just skimming the surface here, and there are plenty of other tools you can use for a Salesforce data migration.  As an example, Salesforce also have Workbench which is an web-based version of Dataloader, with a few differences.

    Everyone has their own favourites, so please feel free to share yours in the comments below!

    In my next few posts, we will cover some popular tips to use when migrating data.

     

  • How to tame the Salesforce ‘technical debt’ beast

    Previously I raised the issue of technical debt, which is an issue that can easily impact any Salesforce org.

    Trying to find out just where to start can feel like trying tame a wild beast.¬† We’ve all been there…¬† Questions like, is it really a problem?¬† Where do I start?¬† How to I gather the information I need?

    Help is at hand, when you are¬†scoping size of the problem,¬†there are some amazing¬†free tools you can use to really zone in on your org’s problem areas.

    New Salesforce features

    The last two¬†Salesforce releases¬†have also brought new features¬†to support you in checking your org.¬† Let’s take a quick look at them both.¬† Please keep in mind, to use both of these new features you will need to check your permissions and license edition of your org.

    Salesforce Optimizer

    Spring ’17 has brought with it the new Salesforce Optimizer.¬† It is a great new feature giving¬†you an easy to understand PDF report.¬† Which focuses on some of the key areas within your org where Technical Debt might be hiding.¬† The¬†report will highlight key areas¬†including:

    Salesforce Optimizer
    Sample of a Salesforce Optimizer report

     

    • Fields
    • Apex triggers
    • Page layouts
    • Report types
    • Validation rules
    • Workflow rules
    • Sharing rules
    • Administrator permissions

    To access Optimizer right now, jump to Setup -> Optimizer.

     

    Salesforce Health Check

    In the previous release, Winter ’17 also introduced Salesforce Health Check.¬† This one is very much aimed at reviewing your org’s security policies, and as a result¬†is a little more ‘techy’.

    The report will give you an overall baseline score, recommended areas of focus and suggested actions covering:

    Salesforce Health Check
    Salesforce Health Check
    • Certificate and Key Management
    • Login Access Policies
    • Network Access
    • Password Policies
    • Remote Site Settings
    • Session Settings

    It is very helpful and useful in performing an audit on these key security areas.

    To find this within your org, head on over to Setup -> Security Controls -> Health Check.

     

    Other Resources

    Salesforce Toolkit

    Another great resource I have used is the Salesforce Toolkit.  It is a must-have suite of free Heroku apps which allow you to analyse, diagnose and configure a variety of Salesforce items.  It does offer up to seven different tools (at the time of writing), and I have used a number of them personally across various orgs of Salesforce.

    Org Doctor

    I found this tool before the Spring ’17 release came out, and introduced Salesforce Optimizer.¬† However this tool still provides some additional¬†information that is helpful when diagnosing any technical debt within your org.¬† Particularly helpful in highlight potential problem areas in your Apex (like API versions and number of test classes) and additional details about your role hierarchy.

    The report it generates once again if very helpful and even contains a brief summary as to why each metric is important to the overall health of your org.

    Schema Compare

    Another fantastic app from the toolkit.  This one presents an extremely helpful report comparing multiple instances of Salesforce.

    Yes, you read that right! Compare two orgs side by side in a single report, which breaks it down object by object.  The two orgs can be a mix of Production <-> Sandbox, Production <-> Production or Sandbox <-> Sandbox.

    An example use case could be to compare a development sandbox with production to see what are the differences object by object.

    Perm Comparator

    The final app I want to share with you today is the Perm Comparator.  Another simple Heroku app which allows you to easily compare Profiles, Permission Sets & Users within an org.  Genius!

    Say for example you wanted to see how two Profiles within your production org actually differ.  This app makes it so simple to view the profiles side-by-side, showing how the user/object permission vary between them.

     

    Now go forth and slay the beast!

    There is never a better time than now to start slaying the technical debt beast, and with these tools you should make short work of it.  Of course, there will still be other areas that may need analysis.  But this should give you an idea of where you are starting from.

    My next post will look at setting a roadmap, which will help you prioritise and deliver improvements for any identified areas from above.

    As always, feel free to share in the comments below.¬† Do you know of any other free tools that can help in analysing and defining where an org’s pain points are?

Back to top button