project issues

  • 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.

  • 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 migrate data into Salesforce

    There comes a time in every administrator’s life, where you might have to migrate data into Salesforce.  Why is that important?  Data is the core of any CRM platform and has the power to become a blocker for your customers and/or internal users!

    A request to migrate data could be as simple as someone asking you to import data into Salesforce from a spreadsheet.  Or it could be due to the retirement of another system.  Even a merger/acquisition!  But when the time comes, you will need to be able to really get under the hood to understand the data and create a data migration plan.  Because without a plan, migrating data can become a massive risk to any project.

    Over the next few weeks, I am going to dive into a number of topics relating to all things data migration.  YAY! I hear you screaming! Also please feel free to share any of your experiences in the comments below, as with all things data migration there is always plenty to learn!

    So let’s get started and dive into the key things to plan for when you are attempting to migrate data into Salesforce.

    Everyone loves data

    Data is the lifeblood of any business.  And your data in your CRM is no different.  Good data can empower any business.  While on the flip side, data can also become a blocker for your teams when not managed well.  But the good news is this shows your users have something at stake in making it better.  These are the same people who can become your data champions!

    To further the point I am trying to make around identifying your stakeholders. ¬†Your end users play a big part in advising you on what the data actually means (for them). ¬†And it is here you will also need to identify other potential stakeholders. ¬†Does the data have an impact on sales reporting? ¬†How about on your company’s financial reporting? ¬†Or is it used to help serve or fulfil your customers.

    Everyone loves data! Source:

    I have a question for you ma’am!

    As part of any data migration, you will need to get up to speed on understanding the data.  Understand and interrogate the old data.  Analyse it.  Test out any assumptions you might have.  And also think through how you want the data to look once the migration has been completed.

    This is a time you are going to need to ask a lot of questions and ensure you (and your stakeholders) fully understand the definitions being used.¬† If there is something that doesn’t make sense, ask questions! ¬†Questions are your friend!¬† Really drill down and confirm your understanding. ¬†Leverage the experience of your stakeholders, bring them along the journey too. ¬†And make a note of these questions are you get answers.

    One lesson I have learned over many data migrations is no-one has all the answers unfortunately.  Most times you have to really dive into the data and test what you have been told.  This is one area that is a big risk to any project and can end up causing a lot of pain no matter how well planned!

    I have been on the tail end of a few really complex data migrations. ¬†Even with the best planning and stakeholders, there has always been an inconsistency somewhere in the data which has you screaming ‘WHY!!!!’ ¬† Especially if you are dealing with an older CRM! ¬†(but that is a story for another time!).

    The point I am trying to make is it has been down to the project team to really untangle and interrogate the data to make sure it makes sense.

    Prepare, verify, test

    One you understand the data, you can plan to migrate the data!  There can be a lot to think about at this stage.

    In your preparation, you need to map out where you want the data to go.  Are there new fields created to support the migration or are you mapping to existing fields in Salesforce?  Does the data-type match (eg does a number field map to another number field)?  Do you have any validation rules or mandatory fields that might get in the way?  If so what is your plan to mitigate that?  Do you update the data before you move it?

    Some of the biggest problems I have encountered in a data migration have all stemmed from a lack of full testing in a sandbox.

    If you have access to a sandbox, plan out your testing.   Even if you have Professional Edition, you have access to at least a Developer Sandbox (check here).  Part of your testing needs to include verifying the actual data.  Does to match what you had in the data source?  Do any lookups to other records link up correctly?  Are the number of records the same?  All those questions you wrote down while understanding the data, can be very useful in the testing phase.

    I have thrown a lot of questions around there, but hopefully you get an idea of some of the things to think about in this stage.  Testing is another great time to re-engage with your stakeholders.  Heck, even get them to login and run a few test scenarios on the migrated data.

    Once you have tested and verified your data, you can start planning the go live and move into production!  Your almost there!

    Step back in time

    migrate data, but only with a backup plan
    Back to the Future

    With the actual data migration into a production / live system, you should plan in advance on how you intend to roll back any changes you make.  Even after testing in a sandbox, there could be something which causes you to halt the data migration.  And if that happens, you need to be able to restore the system to how it was before you started.

    Take a backup, run reports, hold onto the import files from Dataloader.  Whatever it is, just know how you can go back without causing further issues.

    This is doesn’t need to be overly complex, but it will¬†depend on the size of the overall size of the data migration. ¬†Sometime it can just be a simple plan to say ‘if this happens, this is how we move forward’.

    Press the button & migrate data!

    This is the fun part, and all your planning comes together.  This is where you start the migration and hopefully completed the migration as planned.

    Once you have migrated the data into Salesforce, test and verify again.  Repeat the steps you did after you loaded the data into the sandbox.  Test and verify, test and verify!

    Are you finished yet?  Good.  But did you disable any workflows/validation rule/mandatory fields?  Did you remember to turn them all back on?

    And finally, and most importantly. ¬†Have you communicated the successful data migration out to your stakeholders!? ūüôā

    Do you have any lessons learned?

    As mentioned at the start of the post, I feel there is always soomething new to be learned everytime you migrate data.  One of the projects I am working on at the moment is pushing me to learn something new every day! (More on that in another post though).

    Sharing is caring ūüôā Do you have any tips or things you like to plan for?¬† Share them in the comments section below!

  • Identify project risks

    As a Salesforce Admin/Consultant/Developer, you will often be involved in projects or initiatives. ¬†In this post we will take a look at identifying and managing project risks. ¬†Why? ¬†Because in a project, risks can cause major problems and lead to roadblocks that you simply can’t get around.¬†

    What is an acceptable project risk?
    What is an acceptable project risk?

    In a previous post¬†we talked about why setting a roadmap is important. ¬†It allows you to engage with your users and stakeholders while¬†involving them in defining the Salesforce strategy. ¬†(You have setup a roadmap now, haven’t you? ¬†:-))

    But once you have planned what and when things should be delivered, now we need to focus on identifying potential project risks.  How do you judge what is an acceptable project risk?  And how can you manage and then mitigate these risks?

    What is a project risk?

    Risk is an everyday occurrence in our world and it is subjective from person to person. ¬†In an extreme example, some people would take any perceived risk and jump out of a plane (hopefully with a parachute), while others wouldn’t even dream of it! ¬†The point is risk is all around us and we make decisions everyday, even if subconsciously, to say ‘I am prepared to take that risk’.

    Project risks are the same, things that you or the team can see that may potentially cause issues later on. ¬†Now I have used two key terms in that sentence. ¬†Risks and issues…¬†What is the difference?

    In its simplest form a project risk is something that may happen during the project. ¬†And if it does it occur, it may have an adverse effect on a project’s delivery. ¬†That can be either what is being delivered, the timelines for delivery, or in extreme cases can block delivering anything. ¬†Risks’s are potential/future focused. ¬†For example, a risk to a project could be that after the project has finished, end users don’t use what was delivered to them.

    An issue on the flip side is generally something that is current or happening right now. ¬†An example of an issue would be unexpected sick leave. ¬†This could disrupt timelines and what was planned today can’t happen.

    So how do you capture project risks & issues?

    project risks vs reward
    Even though there will be risks, sometimes the reward is worth it.

    Now imagine you were on ship trying to reach your arrival port, you want to arrive on time but there are a number of risks you need to consider.  What route to take?  Are there any storms/icebergs in your way?  Or would you just set sail and hope for the best?

    By identifying any risks and issues, you can then come up with a plan to mitigate it.  Allowing you to avoid extra the time and costs hitting an iceberg would cause

    It isn’t an exact science but the key is to take time, stop and think about it. ¬†Think about what you are trying to achieve. ¬†Risks¬†are¬†related to what you are trying to deliver. ¬†What could derail the project? ¬†Is it related to resources (access to certain people at a specific time in the project)? ¬†Are you at risk of other systems / integrations causing issues?

    You can keep these simply enough in an Excel/Google Sheet that the project team has access to. Everything you brainstormed,  enter down as a new line.  The key is to do it, start it early on in the project life cycle and to continue doing it throughout the project.

    Once you know what the risks are, you can then take measures to address them.   This allows you to plot a course around any risks and hopefully avoid them becoming issues.  As an example, need specific involvement from a subject-matter expert at a certain phase?  Plan for it and book them in.

    Get creative

    Draw a Treasure Map - great way to identify project risks
    Draw a Treasure Map – great way to identify project risks

    When defining risks (either good or bad) you could hold a session with your key stakeholders.  Have a project kick off and discuss the objectives of the project and what does project success look like.

    For something a little different, get creative.

    One session I have run a few times with stakeholders is to split people into smaller groups of three or four people. ¬†Then get people to draw out a treasure map with labels on it. ¬†Draw the risks as circling sharks, a skull island or a ship upon the rocks. ¬†And the treasure is the project being delivered after circumnavigating all the risks. ¬†But the aim is to think about problems creatively, I have even seen a group draw a space ship making a journey through the galaxy…

    I find it helps get people out of their comfort zone and shifts their mindset from their normal day to day work.  You can then also ask the groups what are some ideas to mitigate the risks.

    After the sessions add the risks to your spreadsheet (if you haven’t got them already). ¬†If your group came up with possible mitigations, also make note of this as you can build on it as you start your project.

Back to top button