Blog Posts

Why We Built a Custom Project Management Application

Taking a look at the age old question of building vs buying on the Salesforce.com platform, using our project management application as the use case and story.
Why We Built a Custom Project Management Application

Why We Built a Custom Project Management Application

There comes a time in every Salesforce.com implementation when the simple question comes up, "Shall we build this or use something from the AppExchange?" While it might seem an easy question that could be figured out with some ROI calculations, it can get a little difficult so here are three more questions and a few pointers to help make the decision easier.

How Unique Are You?

The first thing to consider are your requirements. Are they very unique in terms of your business model and process or are they trying to do something pretty standard like syncing Google Calendar with Salesforce.com? An AppExchange product can be great in that it covers 90% of the requirements and the question is, can you build, configure, or live without the last 10%. Installed packages also might cover requirements you haven't thought of or need which could be both a bonus or a distraction.

In our use case with projects, while there are a lot of AppExchange products out there for project management, none of them met our needs perfectly so we decided to start with a free Force.com labs built framework which got us 50% of the way to where we needed to be.

Can You Handle The Code?

Everything from configuration to APEX code requires some level of maintenance, documentation, training, and upkeep. An AppExchange solution can have the extra benefit of being managed by a third party, meaning they are responsible for bug fixes, changes to the platform, and new releases. Sometimes the AppExchange product is an "as is" concept and will not come with any support down the road, so make sure to read the reviews, visit the product's website, and ask them how often they release new features. Writing the code yourself comes with the responsibility of test classes, bug fixes, and overall code maintenance. Do you have the resources to handle the changes, debug the code, or build out new features as users request them?

As a Salesforce.com Development shop, our ability to handle code is pretty good, so a custom build for us didn't include as much risk. Once we got the package installed we built it out starting with configuration but eventually adding on VisualForce elements, Conga Composer reporting, and APEX triggers for data manipulation.

What is Your Time Worth?

The last thing to think about in evaluating build vs buy is the time to market. An AppExchange product can be up and running in minutes in a test environment with users pounding away with test scenarios. The product will sometimes come with detailed documentation and hopefully great support which is something you will never have to write or think about. Make sure to budget in time for an evaluation period for any installed product.

In the build case the time commitment can be anything from a few days to many months depending on the complexity, requirements, or resources to handle it. There will be requirements to discover, user stories to write, and a full development life cycle covering all of the build, test, deploy stages. This can be helpful if your requirements are less rigid as the build cycle can help define new requirements and changes as users get their hands on working models.

The project management software we built starts with the Opportunity object which is where we house all of our sales activity. From there we use custom triggers to take a closed won opportunity and build out and relate the project which includes, the Project record, Deliverables, Issues, Project Team Members, Invoices and Time Entries. This allows us to both use the detailed information from our proposals but housing it in a custom object which provides more granularity for projects. We also built a lot of roll up summary information and use Conga Composer for status reports and exportable project plans that include built in gantt charts. We continue to extend the features and functions of the project management software, but it takes it toll in terms of time and resources.

In the end, for us nothing scratched our itch well enough or provided enough built in value to buy and our requirements of being tightly integrated into our accounting, sales, support and other systems (all Salesforce.com of course) meant that a custom solution was the right way to go.

If you have questions about build vs buy, hit me up on Twitter @JasonMAtwood

Summer '11 Release Notes - Rapid Reaction

As always Salesforce.com has a Summer release - here is a rapid reaction to the release notes.
Summer '11 Release Notes - Rapid Reaction

Summer '11 Release Notes - Rapid Reaction

There is a movement afoot within the Salesforce community to "fix the core" and in my opinion Summer '11 didn't do much to help with the core. The notes were pretty lite, meaning only 68 pages long whereas in years past I can recall sifting through at least 150 pages. While there were some nice enhancements there were a lot of pages dedicated to just a few features. Salesforce Knowledge and the new Profile UI took up what seemed to be half of the release notes. What happened to Opportunities? What happened to tags? Why can I still not relate an Activity to multiple Contacts or Leads? These are all core questions that make the system more usable for the average end user. Although it sounds a little harsh to pick at Salesforce for a lite release there still were some features and functions that I am looking forward to. Here are some of my favorites as well as a baffling item that I am not sure why Salesforce is doing.

My Favorites


Chatter Feeds on List Views - this is a very welcome enhancement for me particularly since I have already run into the dreaded 500 following limit in Chatter. Using this feature I can now follow a list and see any updates made within the last 30 days for any records that are within that list (presumably without having to follow each individual record within the list to see it's updates). A nice enhancement for the future on this feature would be to follow the list and be able to comment on it much like a report or dashboard works today.

Push Notifications for mobile devices - much like my favorite mobile apps Chatter will now push me a notification any time new Chatter gets posted. This will work on iOS devices and Blackberry devices. I should also mention that the beta of Chatter mobile for Android is being released.

Enhanced setup features - this is a core fix so kudos to Salesforce. Global search will now exist within the setup area - whoohoo! Aside from global search there will also be a quick find which allows you to just type three letters and find the setup area link you were looking for - no more clicking a few layers down to get to the Account Record Type. Aside from the Global Search and quick find there is also a brand new Profile UI. The new profile UI inherits the quick find features within the setup area and promises to make it much easier to find profile permissions and change them.

Goodbye Limits - these are small but do hit close to home when talking to a long time admin. No more limits on Long Text Fields and Rich Text Fields on an object. Unlimited Edition gets up to 800 fields on an object (hopefully coming to an edition near you soon). Monthly data exports now available for Professional Edition. These are the types of improvements that make everyone happy.

Thing that Didn't Make Me Happy


There were a few things coming in the next release that didn't make me smile. Most of all I noticed that Chatter is getting removed from the standard Salesforce Mobile App (full and lite versions). This doesn't seem to make a whole lot of sense to me. Their reasoning is that the Chatter mobile app is better for using Chatter, which is true but there are features within the standard Salesforce mobile app that are needed and in fact it loses a lot of functionality when you take Chatter away. The scenario of wanting to look at Chatter on an Account that isn't already in your Chatter mobile app can't actually be accomplished using Chatter mobile, hence the reason for having Chatter included in the standard Salesforce mobile app. I think this is a mistake on Salesforce's part removing a useful feature as opposed to enhancing it.

A Little Lite - Hopefully for the Right Reasons


All in all the release notes had some things that were extremely useful for admins and users alike but still lack some focus on core issues. Again, there are Ideas on the revamped Ideas Exchange that have been out there for years with thousands of votes that haven't been addressed. My hope is that the reason why this release is a little lite is not because of shifting priorities and mind share over integrating all of the new acquisitions that Salesforce has made recently but rather because they are litteraly "fixing the core" architecture of the platform so that things like Lead Conversions, Tags, and Activities can be enhanced more seamlessly in the future.

If you want to discuss this post or any other go to our Facebook page or send me a Tweet @justedelstein. For some more in-depth analysis of the Summer '11 release notes you can always listen to our review of them on the CloudFocus Weekly podcast - Episode 40 - Totally Tax Time

Permissions Sets Coming to a Salesforce Org Near You

A look at Salesforce.com's new permission sets currently in pilot and how we helped a client migrate to them.
Permissions Sets Coming to a Salesforce Org Near You

Permissions Sets Coming to a Salesforce Org Near You

Arkus recently had the opportunity to be part of the permission sets pilot program with one of our clients. For those who do not know what that is, Permission Sets enables Administrators to manage profile requests without affecting all users tied to the same profile and without creating one-off profiles. For example, you can create a permission called Edit Contacts and assign it to a user who's profile doesn't allow them to edit Contacts. You can also group these permissions into a Permission Set to create Super User Profiles without actually having to clone and create a brand new profile. I thought it would be a good idea to discuss how we went about applying these permission sets to a very large and complex profile model and give a little feedback on our first impressions.

Current State

Here is a breakdown of this Salesforce org to help paint the picture. There are over 250 users using 27 different profiles with over half of the profiles being used by less then five users. We all know having permission sets that allows you apply individual permissions to a user avoids this level of complexity but how do you go about untangling the knot? Here is a list of steps we went through to solve the issue.

Step 1: Logical Grouping

The first and maybe the most critical step is to review the profiles and logically group them in some way. We were able to do this by line of business. This allows you to set the base of what your new profiles are going to be. Once we established the groups, we pulled all the profile data into excel and broke each one into its own tab. This allowed us to now focus on each grouping but with a consistent format across the board.

Step 2: Identify New Profile Permissions

Next we spent time doing some data analysis across the permissions and settings. Using some excel formulas and functions we identified which permissions were the same across the grouped profiles and which profile had the lowest level of access per profile permission. The permissions that were the same across profiles identified unneeded permission sets and identifying the lowest level of access gave us our new profile setting.

Step 3: Identify New Permission Set Settings

Now that we have our new profile permissions set, we can start laying out what each new permission set will look like. An example is the profile assigned to the user dictated that they only had "Read" access on Contacts but using a permission we were able to assign that specific user "Read/Create/Edit" on Contacts without changing the profile and therefore not changing all the other user's permissions within that base profile. It became a bit manual at this point but by using some excel functions earlier in the process, it became a much easier task to identify what each permission set needed to have.

Step 4: Create and Test

Our process to this point has now given us the data to begin creating these new profiles and permission sets and assigning them to users. We started by creating all the permission sets first. Then we created the new profiles and once that was complete we updated each user with their new setup. Once done, it was on to testing.

Permission Sets; The Good and the Enhancement List

Permission sets are a much needed enhancement to the Force.com platform. As more and more companies expand their usage of Salesforce, the more complex profiles and permissions will get under the current model. This new functionality delivers permission setting at a user level which is a much more efficient way to manage user's access to the system. This first version delivers the basics - here are some of the good things and some things to consider for future enhancements.

The Good

Permission Sets are easily found under the manage users menu right next to profiles and follow the wizard like process we all know and love when creating a new permission set. In addition, they allow you to clone existing permission sets which became very helpful. The layout is pretty standard and they do logically group the settings which I found to be a bonus. Your first level is on the App and System level and then they go even more granular within the App setting with them broken down by things like Call Center, Sales, and Content.

The Enhancement List

As mentioned, this new feature delivers from a functional perspective but it does have a few things worth noted for the next release. For starters, there is no way to add a permission set to multiple users. You must do it from the user page which in the case above, updating 250 users was a long haul. Now I know this is meant for the ability to assign permissions on a user level, but there are many use cases where you will need to assign a permission set to multiple users and if you could search by profile, that would be even better. The other big thing would be to allow for inline editing. It was a very manual process to have to click into which type of permission and then each permission individually. Oh and don't forget to hit save! It definitely requires way too many clicks. Other then these two, the look and feel is pretty good. Its a great start and can't wait to see what they do with it next!

Transparent is the New Cool Tool in Customer Service

In the last few months I have had more than a few customer service experiences and wanted to share some of the best and worst of what companies are doing today as well as point out how transparency can make it better for everyone.
Transparent is the New Cool Tool in Customer Service

Transparent is the New Cool Tool in Customer Service

Netflix is Out (of Sight)

Netflix has been growing in both users and usage in the last couple of months with more and more people using their streaming video services. A downside to all of the demand has been a few big outages in March lasting anywhere from 30 minutes to almost 3 hours. When it happened in the middle of my Scrubs marathon on a Saturday night, it was time to take action.

My first call was to their customer support which immediately hung up on me as it was overloaded with callers. Strike one. My second reaction was to head online and fill out some sort of online case to let them know about the problem but after 20 minutes of searching I couldn't find an online form to fill out. Strike two. In frustration I tweeted about the outage and immediately got replies from other Netflix users on Twitter experiencing the same issue. No real support, but at least I knew it wasn't just my network or device. Twitter 1. Netflix 0.

AT&T Chat vs Tweet

I found another case of customer support gone wrong a few days later trying to add a mobile number onto our AT&T wireless business account. Being the good self-service type of guy I started by logging into their website to do it myself. After 20 minutes of searching for any reasonable way of completing the task I clicked on the "Chat with Customer Support" button figuring they would be able to help. Not only was the support representative very slow to respond to each request (2-3 minutes each) but after 15 minutes ended by saying I should click on the support tab to find the answer myself. Helpful? No. I did head over to Twitter and threw out a message about @ATT support stinking and was immediately followed by an AT&T representative who spent 30 minutes with me back and forth trying to find the right answer. Twitter 1. AT&T .5.

Cloud Transparency Works

Both of these examples show how companies are doing it wrong. Netflix needs to learn from the likes of Google, Salesforce.com and Apple who all provide online status sites where customers can go to see if there are any issues with the service. This cuts down on customer frustration, support calls and provides transparency to the service. In the case above Netflix didn't even admit to having an outage until I got an email four days later. Netflix also should provide customers a place online to send in tickets or cases. Don't make the customer jump through hoops to tell you that your service is down.

The failure with AT&T is a little more tricky in that they while it is good they have people monitoring and responding by Twitter, why not take that type of effort and put it into your online support and chat service first? Customers wouldn't go to Twitter to complain if they could get a real answer online. If Twitter is a real AT&T support channel, send customers there to start and bypass chatting online with the unhelpful masses.

Rackspace Rocks

I wanted to end this post with an example of a company doing it right. Rackspace provides hosting and cloud services and backs it all up with their own "Fanatical Support". I have been a customer of theirs for over 10 years and the reason is simple, they put customer support first and foremost in their product mix, not as an afterthought. When you call their customer support line, the first thing you get is a human who answers the phone and asks for your customer number. That representative than forwards you to team member who picks up and gets down to business. That is not only rare, it is almost unheard of.

Even better is their online support. For example, I put an online ticket for Rackspace the other day asking them to install the libssl package on my server (don't ask). I filled out the form, clicked the submit button and ticket was created at 3:59 PM in the afternoon. The next response I got was at 4:10 PM just 11 minutes later and the amazing part was this wasn't the auto response message, this the tech team posting that they had completed the install. Yes, you read correctly, Rackspace had completed an install of the library I requested on my server 11 minutes after I had asked them to. That is Fanatical Support.

If you have a great (or terrible) customer support story, tweet it back to me @JasonMAtwood.

Opportunity to Signed Contract in the Cloud

A look at how Arkus helped a client automate and improve their sales approval process, electronic contract generation and signature using Salesforce.com, Conga, and Echosign.
Opportunity to Signed Contract in the Cloud

Opportunity to Signed Contract in the Cloud

One of the most important aspects of closing a deal is how fast you can get from the verbal agreement stage to a signed agreement stage. At Arkus we have automated our own proposal process using Salesforce Opportunites and Products along with Conga Composer to generate quotes and get them emailed off to the right person in literally minutes. When a client recently approached us to automate their sales process so that they can get a quicker turn around time from sale to signed deal we jumped at the chance to use Conga Composer integrated with EchoSign to make their process even more efficient. Here is a short description about what we did - hopefully this will help you as you start to automate your processes and close more deals.

Approving The Deal


The first step in the process for our client was getting the deal approved by management. Using the native Salesforce approvals engine we were able to route parallel approval processes to two users based on which region the deal was in. If the deal was based in one region it went to two people, if it was based in another region it went to two different people. The approval went to both people at the same time but once one of them approves then the deal is considered approved and moved into the next stage of the process. Of course when an Opportunity is approved the record Chatters so that anyone following the Deal gets notified in their feed. The next stages are the fun part.

Conga Workflow


Once a deal gets approved by one of the two approvers a field within the Opportunity record gets sent via an outbound message to the Conga Composer workflow service. The field is a URL that calls the Conga service and sends back a response to Salesforce. The magic here is that nobody had to do anything to generate a professional contract template that includes everything from the person signing to the products included in the deal. This generated contract comes back into the system and generates an Echosign Agreement through the native Conga to Echosign integration.

Electronic Signature


Once Conga does it's work and generates the contract document an Agreement record is created within Salesforce which includes the document as an attachment. This Agreement is related to both the person signing it and the Opportunity from which it was created. Again, automatically based on the approval of the Opportunity this document gets sent to the correct person who needs to sign it and the status of the Agreement is marked as such. Once the Agreement is signed the status of the record inside Salesforce gets updated and the originator of the sales process gets notified via Chatter.

Closing the Loop (and Deals)


This process is fairly typical for a sales organization. At a high level we have a deal that needs to get approved by management and then a contract that needs to go out and get signed. What we have done for our client is take all of those processes and baked them into one slick approval process with integrations getting kicked off automatically via Salesforce. As a salesperson you get your deals closed much faster if you can get that document approved and out for signature quicker and as an operations team you salivate at the idea of not needing to manually enter more data, not needing to generate contracts from templates by copying and pasting data, and keeping track of all the approvals and statuses of those contracts. Add to all of the automation the Chatter capabilities of having the data talk via feeds and the automation of this process is a true win win for everyone involved.

If you want to discuss this process automation or anything related to it feel free to reach out via Twitter at www.twitter.com/justedelstein or comment on the post on our Facebook page at www.facebook.com/arkusinc.