The official Arkus blog provides your weekly dose for all thing Salesforce. Stay on top of the latest, most relevant Salesforce features, applications, and best practices.

Formula Magic With Salesforce

The common and not so common formulas to utilize for Salesforce configuration.
Formula Magic With Salesforce

Formula Magic With Salesforce

Formulas are not only a very important field type, they are also used in the creation of validation rules, workflow rules, and buttons for customization of Salesforce instances. You can get really creative with the combination of formulas, roll-up summary fields, and workflow rules to avoid turning to custom development. Here are a few formulas I’ve come across in the community (modified to work for my requirements) and general ones that are just good to have in your arsenal to utilize. Taking into consideration the field API names may be different for you….

Purpose: End Date calculation based on Start Date and Picklist
Situation: Calculate an end date based on a start date plus a certain time frame set in a picklist.  This end date had to be exact, meaning, days in a month and leap year both had to be taken into consideration. Thanks to the Salesforce Success Community, and with the help of Steve Molis and Chris Edwards (Thanks Guys!), a good starting point was found at this location. The issue however is that the situation called for a need to account for a pick list, so as a result I ended up revising the formula to include the addition of ‘CASE’ scenario. Be aware however, if the Start Date is a formula field you may run over in characters. In which case you would want to create a workflow rule and put this formula into a workflow rule to update the end date instead of creating an end date formula field.  Here’s what the end result looked like:


Purpose: Calculate the % of opportunities won on an individual account

Situation: You want to figure out for accounts what percent of opportunities related to them are closed won. The two fields used are roll up summary fields on the account looking at the opportunity object. It looks like this:

IF( Total_Opportunities__c > 0, Won_Opportunities__c / Total_Opportunities__c, 0)

Purpose: Close date is in the past
Situation: This is a simple check to see if an opportunity is still open but the close date is in the past. It looks like this:

AND(IsClosed = FALSE, CloseDate < TODAY())

Purpose: Calculating the age of a contact
Situation: This is a common formula we typically use to calculate a persons age based on their birth date.  It looks like this:


Purpose: Change the default settings in Lead Conversion Button
Situation: This was a request to change some of the default setting in the Lead conversion button. The request included setting the name of the task subject, set the task as ‘high’ and ‘In Progress’, a default due date, and unchecking the reminder box.  What you need to do is create a custom button on the lead. There are several elements you can change which you can find here. Be aware however this is considered a hack and with every Salesforce release you would want to check to make sure the elements are still valid.  This is what the formula ended up looking like:

window.location.href="/lead/leadconvert.jsp?IsReminderSet_fu=0&sem=0&tsk5_fu='Contact New Converted Lead: {!Lead.LastName}&tsk4_fu={!Today()+3}&tsk13_fu=High&tsk12_fu=In Progress&id={!Lead.Id}&RetURL=/{!Lead.Id}";

The Salesforce Success Community is an excellent resource when you are trying to troubleshoot how to build a specific formula or determine why your formula is erroring out. I recommend a few locations in the community like Answers, or Groups like Who owes me a beer?!? and Formulas - Help, Tips and Tricks. Searching for a similar issue first in any of these locations is always a best way to start then posting in any of these locations.

Do you have challenging or interesting formulas in your back pocket?  Please feel free to share in comment below, on our Facebook page, or directly at me on Twitter @LeiferAshley or in the Success Community.

NGO Disconnect - Episode #212 of CloudFocus Weekly

Sales mastery, data loading special characters, new Trust site and an in-depth breakdown of the pros and cons of NGO Connect.
NGO Disconnect - Episode #212 of CloudFocus Weekly

NGO Disconnect - Episode #212

Loading Data with Special Characters

A detailed process for loading special characters using text editor and data loader tools.
Loading Data with Special Characters

Loading Data with Special Characters

If your data contains special characters, it is important to determine the best way to mass import/update the data via a data loader to ensure that the data stays clean and in its original form. Loading data with special characters into Salesforce using a data loader can be a little tricky. You may find that you have to try the process a few times before getting it to work. Have you ever experienced issues with losing the special characters when saving the spreadsheet to a .csv or trouble saving the spreadsheet as unicode via the text editor without losing the format? Do you find that you’re just not sure how to even begin loading special characters? Then you will find this blog helpful. I will take you through a step by step process for loading special characters via a data loader.

Saving Excel Spreadsheet

Once your spreadsheet is ready to be inserted into Salesforce, one of the first steps is to save it as a unicode text file (see image below). Unicode is the format needed for opening and preparing the file in the text editor and you can save your spreadsheet as any unicode text file option available to you.


Formatting Spreadsheet via Text Editor

You can also use any text editor to format your spreadsheet. For Macs running OSX, TextWrangler and TextMate are both great and easy to download and use. For Windows, some of the top text editors are Notepad++ and Sublime. Sublime is also available on Mac and Linux.

For this blog post, I’ll use TextWrangler to illustrate how this works, but you can use anything that has the ability to find tabs and replace them with commas. Once you open the text editor, open the .txt file you just saved and you will see the contents in the editor.

You will then need to remove the spacing between the characters so the file can be later converted to .csv without losing the formatting. To do this, click on Search → Find.

A Find pop up window should open up. Enter “\t” in the Find section and then enter a comma in the replace section and click on Replace All; “\t” represents a tab, as it’s a regular expression. This will replace all of the spaces with commas.

Your text will look consolidated with all the spaces removed and separated only by commas.

Now you can save your file as the Unicode 8 file, which is the format needed for maintaining the special characters in Salesforce.

Once your .txt file is saved as UTF 8, you can change your file’s extension to .csv by clicking on the file name and replacing .txt with .csv (see image below). You will then see a pop up window asking if you want to make this change and you can click on “Use .csv.”

Loading Spreadsheet via Data Loader

You can now use any data loader (e.g. Apex Data Loader, to import your spreadsheet, the process below is showing Salesforce’s Data Import Wizard.

Once you launch the wizard and select your object (in this case Accounts and Contacts), you can  just drag and drop in your .csv file (see image below). You must then select the character code, which is Unicode (UTF 8). Once you select this, click on next and double-check that the special characters look correct in the examples provided. If the special characters are in their original format, then you are all set to load this into Salesforce. 


Once you get a good process in place, loading special characters can actually be a smooth and easy process. Hopefully, this blog provided a detailed process to not only use but to also help understand the steps needed to ensure your special characters are loaded in the correct format in Salesforce.

If there are other great processes for loading special characters that you would like to share, please feel free to comment below, on the Salesforce Success Community, on our Facebook page, or directly at me on Twitter @sylviacabral44.

Sales Mastery Through Habit

Mastering sales through the power of habit and Salesforce.
Sales Mastery Through Habit

Sales Mastery Through Habit

Success is achieved by focusing on the habits that shape every aspect of our lives.  As gracefully pointed out in Chet Holmes’s book “The Ultimate Sales Machine”, you develop a skill by not doing a 1,000 things but by doing 1 thing 1,000 times. These habits done over and over again develop into masterful skills which in turn leads to success in any field. The beauty of a developed skill is not only that we become good or great at something but we become more efficient which allows us to work on other skills.  A great example of this is my journey as the head of sales at Arkus.  Here is a look into how habits develop into skills and how it relates to the success of Arkus as a Salesforce Implementation Partner.

How do we learn a new skill?

According to Noel Burch’s Conscious Competence Ladder there are four stages of learning; Unconscious Incompetence, Conscious Incompetence, Conscious Competence and Unconscious Competence. These stages highlight two factors that affect our thinking as we learn a new skill: awareness (consciousness) and skill level (competence). According to the model, we move through these four levels as we build competence in a new skill.  Here is an overview of those four levels and how it related to my journey here at Arkus.

Unconscious Incompetence

The first stage is called “Unconscious Incompetence” and this is when you do not understand or know how to do something and you do not necessarily recognize the deficit. This is a critical level as it requires us to have awareness that this skill is important to develop. It also requires a good amount of courage to accept we don’t know what we are doing and the willingness to do something about it.  Fortunately for me this was pretty easy for me to accept since I never did any sales in my life.  The question became what do I need to do to become great at it which led me to do research and find the best sales professionals I knew in my network and pick their brain.

Conscious Incompetence

Once I took the step to do research, I graduated to the next level.  This is the level called “Conscious Incompetence” and this where learning begins.  Even though you still don’t understand or know how to do something, you apply the discipline to try and that is exactly what I did.  The advice I got was to always have a positive attitude (losing is part of the game), sell yourself, use a CRM and never be afraid to talk about money.  So that is what I did: I studied every self help guru out there, started using Salesforce to track my leads and started to build a message that showed the value of Arkus.

Conscious Competence

The first level requires awareness and courage which for me was to accept I knew nothing and needed to do research. The second level requires discipline which I did by incorporating a process based on the advice I received from my network. This third level called “Conscious Competence” is the result of the hard work.  This stage which probably took me 3 years or so to get to is when I finally understood what sales is all about and knew how to be good at it.  This level is all about hard work and growth. It’s applying those traits (awareness, courage and discipline) everyday looking for new ways to get better and the continual practice at it. We had success over the first 3 years (otherwise we wouldn’t be in business today) but how well I told the Arkus story and how well I managed our leads and partners got more efficient and polished by the day. A great example is how I managed leads in Salesforce. I went from managing my leads via a “List View” and calling them all on the same day once a week to a way more efficient system leveraging tasks and chatter.  Now my leads get followups when they should and my team is well informed as to where we are. It took awareness to realize that the more leads I had to manage the more my existing system wasn’t going to work.  I then had the courage to change and the discipline to try a new way.

Unconscious Competence

The last stage “Unconscious Incompetence” is very similar to the previous level but the skill becomes "second nature" and can be performed easily.  Sales is not something you can do in your sleep but at this stage you are well polished, rarely rattled and highly efficient.  It doesn’t mean you stop growing or learning, it just means when you are thrown a new opportunity your instincts take over and you immediately start a plan of action.  That is how it is for me now. As new relationships or leads come to me, I don’t need to think about what I should do or what I should say.  I just do it.  The last thing to point out on this level is that to sustain it, you need to keep doing it otherwise you will drop back to the previous level.  Yes you can pick up a bike after a few years and ride it but it will take a little time to get you back to where you were when you did it everyday.


The journey to develop a new skill is not easy.  You need to have awareness, courage and a lot of discipline to be good at something but the good news is the more you apply them the easier it gets. Also, celebrating the small successes along the way helps build confidence and more courage to keep going.  I can still remember the excitement we had when we landed our first project over five years ago. Oh how time flies when you are having fun!

If you have anything to add or want me to expand on, please feel free to comment below, on the Salesforce Success Community, on our Facebook page, or directly at me on Twitter @Salvatoriello

No Foolin - Episode #211 of CloudFocus Weekly

The issues of merging, Lightning Connect, Computer Programming truths, Amazon Dash Button and Dreamforce registration opens.
No Foolin - Episode #211 of CloudFocus Weekly

No Foolin' - Episode #211

Completing the 360 Degree Customer View with Salesforce Lightning Connect

Completing the ever elusive 360 degree view of a client is made easier utilizing Lightning Connect from Salesforce.
Completing the 360 Degree Customer View with Salesforce Lightning Connect

Completing the 360 Degree Customer View with Salesforce Lightning Connect

This isn’t meant to be a technical or architectural guide for how to implement Salesforce Lightning Connect, merely an exploration of a specific use case. More specifically, I am going to be talking about a banking use case whereby the bank’s front office staff, back office staff, and most importantly, in this case, the customer service department are all using Salesforce. A decision has been made to integrate the banking core with Salesforce to allow users to get a view of all their customers, households, financial accounts, and the roles that individuals play on those financial accounts.

Decisions Made About Data Residency

An important decision that was made in this use case was to specifically leave out all “transactional” data such as ATM use, checks, interest payments, online bill pay, etc… This decision to not have the transaction data resident in Salesforce is a really good one. To bring all of that data into Salesforce from the core would cause issues with data volumes and in all reality it’s only valuable in certain circumstances and it is absolutely 100% read only data that would never need to be changed inside of Salesforce.

While the decision has been made to leave transactional data out of Salesforce that does mean that we have a gap in the big picture view of the customer inside of Salesforce. What happens when a customer calls the customer service department who is using the Service Cloud and asks about a specific ATM transaction where a check being deposited was “eaten” by the machine? Odds are the customer service representative needs to do one of two things; either go into a second system or call up someone who has access to another system and ask them what happened. The gap of not having this type of transactional data within Salesforce has hampered the customer service representative’s ability to do their jobs in the most effective and more importantly most satisfactory way for the customer.

Lightning Connect for Data That Resides Outside Salesforce

Utilizing a standard called OData, Lightning Connect allows for data that resides outside of Salesforce to be viewed in real-time inside of Salesforce. When doing a Lightning Connect integration you would simply create an External Data Source within the setup menu of Salesforce and define a datasource from a service URL. Once defined Salesforce makes a call out to the data source defined and brings back a list of all the tables in the external system that are available. Mind you, this is all being done through point and click functionality.

Once you authenticate and get the list of tables from the external system you select one or more to “sync”. Once it’s selected to sync it creates what is called an External Object automatically. All the field names and labels come over from the source system but you can change those if you’d like. At this point we have a new object that is treated like a custom object in Salesforce and we can create and define relationships to already existing data objects within the platform.

Completing the 360 Degree View

In our use case we would create a lookup relationship between our already existing resident Financial Accounts and our Transaction data that we are bringing in via Lightning Connect. When a user loads a Financial Account record all of the Transactions associated to that Financial Account will be loaded in real-time in a standard Salesforce related list.

Not only does this data now exist in context on a Financial Account, but we can also have a field created on our Case object that can lookup to a Transaction. So when a customer calls asking about that ATM machine that ate their check, a Service Cloud agent can create a Case related to the Contact and the specific Transaction that caused them to make the call in the first place. This opens up a whole new world of reporting and analytics as well as a much easier way for the customer support representative to solve the issue more quickly.

Lightning Connect creates a really powerful real-time view for end users of data that in all likelihood would never reside inside of Salesforce. Just because the data doesn’t reside inside of Salesforce though doesn’t mean that a user wouldn’t want to interact with it as though it did. Giving users this powerful real-time integration can help to complete the 360 degree view of the customer while empowering users to service and support customers in a way that they’ve never been able to before.

Please feel free to comment below, on the Salesforce Success Community, on our Facebook page, or directly at me on Twitter @JustEdelstein.

Merge With Caution

Considerations for merging Salesforce Accounts and Contacts using the standard merge tool.
Merge With Caution

Merge With Caution

Users have always had a way of duplicating data, especially back before the dawn of time (Spring 15 - when there was no built in real time duplication prevention). Being able to take two or three accounts or contacts and merge them into one is great feature. On the other hand, losing data while doing it, is not so great. Here are some considerations to consider before merging.

The built in tool for merging accounts and contacts is both a hidden gem and a life saver. The built in merge tool does a lot. It allows you to pick the fields you want to merge, it combines all of the related information but there are some gotchas that you might want to watch out for when merging.

Chatter & Topics

The first thing to consider while merging is Chatter. When you merge two records together, the Chatter posts on both of them do NOT merge. You will be left with the Chatter of only the main record you picked during merging. While this might seem like a small deal, remember that this also includes any files attached in Chatter. Those too will be gone along with any topics assigned.

If you want to make sure you have an archive of all the Chatter, consider using a tool like Compliance Locker (shameless plug), which writes all Chatter to records in custom objects that won't be affected by merging.

Field History

Another thing that goes bye bye when merging two records is the field history. This long standing feature lets an Administrator define up to 20 fields that get logged as history related to the record. This is great for auditing who changed what and when but on a merge, only the main record keeps the field history.

If field history is important, consider pulling an archive via the Data Loader, reports or create a custom archive object to re-create the history.

Names Matter

While merging contacts is a little easier because they start in the same account (remember that you have to get them there first), the account name really matters for finding and merging. For example, you might have company called "ABC Carpets" and another duplicate called "Carpets, ABC" the tool won't find them both to allow you to merge. You could search for "ABC" or "Carpets" and one or the other will show up, but not both. The reason is the merge search is pretty basic (too basic?), only really going on the start of the account name, not all of it. To work around this, rename one of the ones you want to merge so they will both show up in the search.

Do you have some other hints or tips about merging? Post in the comments below, in the Success Community on our Facebook page or directly to me @JasonMAtwood.

Lightning Strikes - Episode #210 of CloudFocus Weekly

A bag of blog posts about surveys, integration tools and lightning process builder as well as new MSFT and Salesforce announcements.
Lightning Strikes - Episode #210 of CloudFocus Weekly

Lightning Strikes - Episode #210

Go Lightning Fast with Process Builder

A deep dive into Lightning Process Builder with a few use cases, what it is, and what it isn’t!
Go Lightning Fast with Process Builder

Go Lightning Fast with Process Builder

Lightning Developer Week has passed us by a few days, but we can keep the energy going with a deep dive into Lightning Process Builder. Process Builder is another addition to the workflow automation features of the Salesforce platform, and it overlaps functions provided by Workflow Rules, Approval Processes, and Visual Workflow. Salesforce’s Trailhead site has a great table comparing these automation tools, and here’s the gist of when we recommend using Process Builder:

  • Centralize a complex set of if/then statements and their relevant actions; this usually requires multiple workflow rules to achieve
  • Perform actions not possible with workflow rules, like creating records (other than tasks), Chatter posts, calling Apex code, and updating any related parent and child records
  • More intuitive UI than Visual Workflow for building a set of steps and actions
  • Maintain version control over a given process, so you can see how it changes and revert back to previous processes

Process Builder sounds amazing based on the above points, but it does have some caveats. As the feature evolves, these gaps will likely be closed, but here are some reasons to use a more mature automation tool instead of Process Builder:

  • Approval Processes support being called by user clicks, Apex, and Visual Workflow; Process Builder only evaluates upon a record changing
  • Visual Workflow supports screen design to collect data and guide a user
  • Visual Workflow supports deletion of records
  • Workflow Rules can send outbound messages
  • Workflow Rules can have multiple time triggers

Let’s dive into our use cases, because these tools are already well documented and most requirements may have multiple solutions to produce the same result. Process Builder is already enabled for Spring ‘15 orgs, which means almost everyone reading this will be able to start building; navigating into Setup > Build > Create > Process Builder will launch the Process Builder home page, and we can create a new process or manage existing processes from this UI. 

Navigating to Process Builder in Setup menu

Updating a Parent Record through Lookup Relationship

Now that we’re ready to go, let’s start with our first use case. Cross object workflow allows us to update fields on a parent record, but only via a master-detail relationship. Process Builder is relationship agnostic, and allows us to go across a lookup to update our parent record’s fields. Our contact Bruce Wayne has recently been reinstated as the CEO of Wayne Enterprises, and we want to ensure he is marked as the greatest influencer on the Account.

Process Builder updates Account from Contact

A deep dive into Lightning Process Builder with a few use cases, what it is, and what it isn’t!

After updating Bruce’s contact to state he’s the “CEO and Chairman”, our process goes to update the account’s greatest influencer from Lucius Fox to Bruce Wayne. This is not possible to achieve with a workflow rule and field update, and our process was able to update a lookup field. This process is relatively simple, and involves one criteria step and a single action.

Process Builder updates Account from Contact with Process

Meeting Notes to Chatter Group

Continuing on our road into new actions available to us with Process Builder, let’s go a little wild and do a more involved use case that leverages Chatter posts. Often times, salespeople will have meetings, and some of these results need to be highlighted to a group of people. Chatter posts are a great way to share this, especially since we can’t use email alerts with the Event object. Here’s a quick demo of logging a meeting, checking a box, and the post hitting our Chatter group “Noteworthy Meetings”.

Process Builder posts Event to Chatter feed

This is another simple process, leveraging only one criteria step and a single action. With our post to Chatter option, we are able to post to a user, group, or on the record feed (if Chatter is enabled for that object). The editor allows us to merge in fields from our record and include that within the body post. Another great use for these is closed won notifications, and different criteria steps could determine which sales management group gets the post.

Process Builder posts Event to Chatter feed process

Pushing Household or Company Addresses Down to Contacts

Address management has a top down use case, where a firm or family moves and the address of the account will cause contact addresses to change as well. We typically encounter this use case, and previously would recommend the use of code to manage this, or a separate address object. Here’s a case where we change the mailing address for all of Wayne Enterprise’s contacts to 1 Market Street in San Francisco.

Process Builder pushes Account address to Contacts

Instead of a screen clickthrough of the finished process, let’s take a look at how fast this can be accomplished from the My Processes page. Granted, I have spent some hands on time with Process Builder, but it takes 130 seconds to accomplish this, which is much less time than it would take to write the trigger and test class to do the same work.

Process Builder pushes Account address to Contacts process build

Process Builder is a huge improvement to Salesforce’s declarative suite of tools, allowing admins and developers to post to Chatter, update parent records and multiple child records, create records (except for tasks, you still need workflow rules for those), and get into more complex workflow situations. These changes have some nuances and the tool will mature over each release to make it even more powerful; a high confidence prediction is that this tool may soon replace Visual Workflow by the Spring ‘16 release.

Do you have use cases or requirements that you can share, or chat more about Process Builder? Please feel free to leave comments and questions below, on our Facebook page, directly @RogerMitchell on Twitter, or in the Success Community!

Apple Watchers - Episode #209 of CloudFocus Weekly

All about the Apple Event, Apple TV, new Macbook and the Apple Watch.
Apple Watchers - Episode #209 of CloudFocus Weekly

Apple Watchers - Episode #209

Filed under: