Technology

User adoption

Tuesday, May 20th, 2008

You can build it, but will they use it? User adoption is key to CRM success. Here are the last login times for all my users as of 9 AM on May 20th:

screenshot

Can’t really ask for better than that, can you? It’s clear from those numbers that we’ve fully embedded CRM into our life here. We’re continually looking at ways to use it more effectively in service to our mission.

Here are a couple tips for adoption that have worked for us:

  1. Have an executive who understands the power of CRM, and conveys to staff using it is part of everyone’s job
  2. Tie key processes like billing customers, reporting to funders, and time tracking into the system. If clients aren’t getting billed and people aren’t getting paid, the adoption problems will surface early and be resolved quickly.
  3. Talk periodically about how to expand and deepen the use of CRM by all groups
  4. When a group has an idea for modifying the CRM in support of a need, implement it for them in short order. Don’t squash interest and enthusiasm
  5. Offer User support and one-off trainings whenever someone wants it

We’re surely not perfect in our use of CRM. For one, we’re not up to our latest code that we’re currently implementing for customers. But everyone uses Salesforce almost every day, and there is no doubt that Salesforce.com is the business process core of our enterprise.

Why net neutrality is important

Monday, May 19th, 2008

I am loving the Internet media this election cycle. The most insightful political analysis I’ve read this year has been on political blogs, not TV. I watch Keith Olberman, and he reports stories that were broken on blogs earlier that day. I’ve been reading way too much of this material this spring (ask my wife), and I have to say that it feels like a core pillar of our future as a democracy.

There are amazing disparate voices out there that have huge circulation numbers and relatively low production costs. Newspapers and TV struggle as Internet media readership increases. It is the future, and it is skewed to the people, the small voices, not the corporations.

The biggest threat to this massive shift is a top-down squelching that is being attempted by folks like Comcast and fought by folks like you and me in support of what is called net neutrality. In short, we need to keep the Internet wide open, and not restrict people’s access to the small, crazy, off-beat voices out there. Comcast and others are trying to make it harder to read dailykos.com, talkingpointsmemo.com, and openleft.com.

Don’t let them do it.

Think I’m over reacting? Watch this short, small-budget media production of John McCain in his own words:

The overwhelming media narrative on John McCain is that he’s a straight shooter, and sticks to positions even if they are unpopular. These narratives are self-reinforcing and almost impossible for common people to affect. Until now. 500,000 people have watched this clip as of my posting this. Millions have watched Obama online. People are seeing for themselves and making up their own mind.

And the media has to adjust, because it’s harder to maintain an untrue narrative when others are out there contradicting you with pesky things like facts and video. Kinda makes you look like you didn’t do your research, or at worst that you’re lying.

My state representative is retiring this year and a candidate for her seat stopped by our house yesterday. He was a nice guy, a Democrat with lots of experience with fighting for better health care. He asked me what I cared about and I told him net neutrality. He stumbled a bit, but knew about the issue. He said, “It’s kind of a federal issue.”

On one level he’s right. But Comcast operates in Washington state. Comcast is granted a monopoly by the City of Seattle. This fight must be fought at every level of Government. And it must be fought by Democrats. The Republican party is a top-down enterprise. Just look at all the failed Republican projects that were supposed to emulate Daily Kos, or Act Blue. Democrats, like Obama, thrive in a bottom-up world. A powerful Internet-based media is a massive boon to the Democratic party, because it serves the public, and the public is majority Democrat.

If there were a cable provider who was pro net neutrality, I would switch from Comcast in a heart beat. But heck, I may just cancel cable altogether–I can follow politics better on the web anyway. As long as the net stays neutral.

Exchange/Outlook Indexing Stinks

Wednesday, May 14th, 2008

Evernote, Xobni, Gmail, and Google Desktop’s Outlook search all have better indexing than Exchange. And Exchange is supposed to be the enterprise-level flagship of messaging systems. How is it that I can’t find my Exchange mail when I need it?

Relationship changes and dead reports

Wednesday, May 14th, 2008

Summer ‘08 is coming. There are a couple features that are hitting that will allow me to ditch a bunch of Apex code I’ve written. I’m kind of surprised at this, only 9 months after I got access to Apex, the platform is maturing to where things I did with Code can be done in much easier ways. Here are the features that are coming that will be most helpful in getting rid of Apex:

  1. Cross Object Formulas: The ability to show Parent data on the Child record will obviate the use of Apex for that kind of thing. I was doing this with a Contact in a Household–showing the Household Name and Greeting on the Contact. Won’t need to now, I can just create two formula fields.
  2. Double Master Detail: Having two master-detail records allows rollups in two directions. Right now I have some Apex to allow us to fund individual projects from Restricted Funding Pools. Project Funds is an object that pulls an amount from a Fund and applies it to a project. My Apex does the math and shows the money drawn down from the Fund and applied to the project. This will be completely obviated by Summary Rollups now that I have double master details.

Here’s a small problem. When I change text fields that are written by Apex to cross-object formula fields, I’ll have to tweak all the reports that use those fields. That makes sense, and it’s work that will be well worth it.

Here’s the big problem. By taking advantage of the new master-detail relationships, I have to change the relationship type, which ruins all reports that are based on that relationship. Turns out that the schema change takes 15 seconds, and the rebuilding of reports can take many, many hours.

In the project arena, we have over 100 reports that will potentially have to be rebuilt. And the real drag is that the old reports aren’t viewable after you change the relationship type, so you have to know what you want to rebuild ahead of time.

What I would love is this–if you change a relationship from lookup to master detail, it would be great if your reports were migrated for you. I have no idea how hard that would be because there is so much that happens behind the scenes with reporting. But the current situation is pretty rough when you want to change relationship structure.

I can only imagine what it must be like if a large organization wants to change schema to take advantage of the new double master detail. If there is anything Salesforce.com can do to mitigate this problem, I’d love to see it.

If reports ever get exposed via the metadata API that might help a lot–easier to tweak 100 text files rather than recreate 100 reports from scratch.

My first Cross-Object formula

Wednesday, May 7th, 2008

In my brand new Summer ‘08 pre-release dev environment I created a formula field on Opportunity that looks up to the related Campaign:

IF(NOT(ISNULL(CampaignId)),HYPERLINK("/" & CampaignId, Campaign.Name ),"")

Which is a hyperlink to the Campaign to which an Opp is related.

Why, you might ask. Because for some reason, Campaign isn’t available in the Related List for Opportunities on the Contact Page Layout. And sometimes it’s nice to see giving history along with the Campaigns those gifts came in from. I had a customer ask me for this today, as a matter of fact.

Would be even nicer if I didn’t have to fake it, but this will do.

Make Whitelisting Easy

Wednesday, May 7th, 2008

It’s very beneficial to whitelist the networks from which Users will regularly access their Salesforce.com database. If you don’t explicitly whitelist their networks, people will have to deal with security tokens when they use tools like DemandTools.

One problem–Users have no idea what an IP address is, much less how to find theirs. So I ask them to go to this URL: http://whatismyip.com It’s pretty self explanatory. It just tells you the public IP you’re coming from.

When the User hits this site, they can then add their IP to the whitelist in Security Controls, and they won’t need their security token to use great software like DemandTools.

Great thoughts from Clay Shirky: Big changes coming…

Tuesday, May 6th, 2008

Clay Shirky has a very compelling talk on the innate power of the interactive experiences on the Internet. I got this via Chris Bowers who’s been doing some really interesting thinking about the Internet and how it is possibly more important than the politics of the day. Shirky backs this up with some back of the envelope calculations about just how much we’ve wasted by watching TV. If a very small part of that time gets repurposed in a participatory project like Wikipedia, the scale is pretty amazing.

I really enjoyed it, and I think it applies directly to the work we’re doing with engaging the public in an online fashion. We’re in this interesting inflection point between people seeing themselves as passive consumers, and a future where consumption, production, and sharing will be more evenly balanced. Really fascinating!

Salesforce.com Summer ‘08 Release Notes

Tuesday, May 6th, 2008

The notes are out for Summer ‘08. Here are some highlights in no particular order:

Public Tagging

Public tagging enables users to view and use tags applied by other users within an organization. Any public tag that a user adds to a record can be viewed by any other user who can also access the record. As with personal tags, administrators can enable public tags on accounts, activities, assets, campaigns, cases, contacts, contracts, documents, events, leads, notes, opportunities, reports, solutions, tasks, and any custom objects (except relationship group members).While any user can add a public tag to a record, only users with the “Tag Manager” profile permission can rename or delete public tags.

Across all users, an organization is limited to:

  • 1,000 unique public tags
  • 50,000 instances of public tags applied to records
  • 5,000,000 instances of personal and public tags applied to records

Interesting. Could really be powerful for decentralized flagging of records. Appears that you can’t report on these yet.

Enhanced Lookups

If enabled by your administrator, account, contact, user, and custom object lookups can behave as enhanced lookups. Enhanced lookups update standard lookup fields with the following functionality:

  • Enhanced lookup search queries are broken into separate search terms at any split between alphabetic, numeric, and special characters. In other words, if you enter ALL4ONE in an enhanced lookup field, the resulting query searches for All and 4 and ONE. Consequently, entering ALL the 4 and ONE returns ALL4ONE. Also, searching for S& returns fields containing both S& and &S.
  • Enhanced lookups allow users to sort and filter search results by any field that is available in regular search results. Users can also hide and reorganize the columns that are displayed in the results window.
  • Enhanced lookups return all records that match your search criteria and allow you to page through large sets of search results.

If enabled by your administrator, both standard lookups and enhanced lookups can display a dynamic list of matching recently-used records when a lookup field is edited. This list is populated from recently used items and is restricted to objects of the appropriate type. For example, while editing an Account lookup, you can see recently used accounts with names that match the prefix you have entered. Recently used contacts do not appear in this list.

Could be really cool. A bit limiting that you can only lookup against recent items–that’s a pretty short list. Will be nice in VisualForce interfaces.

Update: Pretty nice with the autolookup. Seems that the filtering doesn’t work as I had hoped. I would love to have a lookup that would show Accounts, but only of a certain record type. No go on that.

Enhanced List Views

you can now edit single records directly from a list view by double-clicking on individual field values. If your administrator has granted you the “Mass Inline Edit from Lists” user profile permission, you can also edit up to 200 records at a time with inline editing.

There is lots more about List Views–these are clearly a big platform feature for them moving forward.

Custom Default Landing Tab

In Summer ‘08, you can now specify a custom default landing tab when creating or editing an app.To do so, use the Default Landing Tab drop-down menu below the tab selection
area of the app creation wizard. The default landing tab is displayed at login and at any time a user switches between apps with the app menu. For example, the Call Center app can be configured so that the Console tab is the default landing tab.

Might be a nice feature for in context help and links–maybe more so than the current home page.

New Metadata API Objects

  • Custom Page Web Link
  • Home Page Components
  • Home Page Layouts
  • Layouts
  • Validation Rule
  • Workflow

Oh, My, God. Page Layouts take FOREVER to recreate by hand. If we can do this via the Metadata API it will be huge!

Cross-Object Formulas

In a previous release, we introduced cross-object formulas in validation rules, workflow rules, and other business rules.With Summer ’08, you now have the same flexibility with formula fields. These formula fields can now reference merge fields from parent records that are related via master-detail or lookup relationships. In addition, cross-object formulas can reference up to five related objects.You can also create a formula field to display fields from related objects on detail pages, list views, related lists, and reports. For example, a Discounted Amount formula on the opportunity object can use a Discount Percent field defined on the account object.

Now that I’ve said Oh, My, God once, let me say OMG! Particularly useful in Reporting and Email templates where you only get fields off one object. Huge for communications!

Update: These are indeed the greatest thing since sliced bread.

Apex changes: Developer Preview

Dynamic Apex is composed of dynamic SOQL and SOSL queries, as well as dynamic DML. Dynamic SOQL and SOSL queries provide the ability to execute SOQL or SOSL as a string at runtime, while dynamic DML provides the ability to create a record dynamically and then insert it into the database using DML. Using dynamic SOQL, SOSL, and DML, an application can be tailored precisely to the organization as well as the user’s permissions. This can be useful for applications that are installed from the AppExchange.

Apex managed sharing allows developers to use Apex to programmatically share custom objects. When you use Apex managed sharing to share a custom object, only users with the “Modify All Data” permission can add or change the sharing on the custom object’s record, and the sharing access is maintained across record owner changes.

An Apex annotation modifies the way a method is executed, similar to annotations in Java. Use the future annotation to identify methods that are executed asynchronously.When you specify future, the method executes when Salesforce has available resources.

Can’t wait to play with these features. Asynchronous Apex could solve a lot of problems as it might allow governor limits to go up for these kinds of batch jobs. We’ll see.

Double Master Details

In Summer ’08, you can now create two master-detail relationships on a single junction object to make it easier to represent a many-to-many relationship in your data model.

Will be nice for those annoying junction objects we all have to create. Will we get summary rollups in two directions??? Update: Confirmed that rollups work both directions.

Analytic Snapshots

Analytic snapshots enable users to run a tabular report and save the report results to fields on a custom object.With analytic snapshots, users with the “Manage Analytic Snapshots” permission can map fields from a source report to the fields on a target object, and schedule when to run the report to load the custom object’s fields with the report’s data. Analytic snapshots allow users to work with report data similarly to how they work with other records in Salesforce, such as:

  • Creating and running custom reports from the target object
  • Creating dashboards from reports that reference the target object
  • Defining list views on the target object if it is included on a custom object tab

Scratches an itch I have right now for a client–benchmarking groups over time.

Ideas

With Summer ‘08, Salesforce Ideas now lets administrators create multiple communities that can be made available to internal Salesforce users and portal users, or restricted to internal Salesforce users only. In addition, Salesforce Ideas now includes many of the powerful Force.com platform features you are accustomed to using on other standard and custom objects. For example, you can now do the following with Salesforce Ideas:

  • Create custom fields
  • Specify the layout of your custom fields
  • Use validation rules
  • Create workflow rules
  • Define Apex triggers

I was pretty surprised they launched Ideas without custom fields. I’ve come to expect that kind of customizability with all Salesforce objects.

Salesforce to Salesforce

Publish and Subscribe to Accounts and Contacts in Salesforce to Salesforce You can now publish and subscribe to accounts and contacts using Salesforce to Salesforce. Publish Related Tasks in Salesforce to Salesforce You can now forward tasks that are related to a shared record using Salesforce to Salesforce.

This could be interesting for sharing data between groups in a coalition. I still have yet to get my head around it, but am very interested now that it includes Contacts.

Multiday Events

About time! Litterally!

Extended Mail Merge

With Extended Mail Merge, a mail merge operation cannot exceed the following limits:

  • 1000 records
  • The selected mail merge template(s) total size cannot be larger than 1 MB.
  • For mass mail merges, the number of selected records multiplied by the combined sizes of the selected mail merge templates cannot be larger than 50 MB.

Extended Mail Merge is available by request only. Please contact salesforce.com Customer Support if you are interested in this feature.

Nice that the limits have gone up. Not so nice that you can’t effectively estimate the number of records that will be allowed. Who wants to do the math described above???

Converted Leads

Converted Lead Page Previously, if you created a link to a lead detail page and later opened the link after the lead was converted, Salesforce provided a message stating that the lead was converted. Now, applicable information about the converted lead is also provided, including the name of the account, contact, and opportunity.

This makes a lot of sense. There will also be some new reports for seeing Leads and Contacts together.

Please comment if I’ve misrepresented anything or I’ve skipped a feature you’re really excited about.

Benioff on HuffPo, Ending Stuff

Tuesday, May 6th, 2008

Salesforce.com founder Marc Benioff just reposted an April magazine article to Huffington Post:

Salesforce.com was started with a simple idea to make business applications as easy to use as a simple website. It was our mission to spark what we termed “The End of Software” revolution–the opportunity to democratize the industry by changing the way software was delivered (online, or as-a-service). That wasn’t the only thing we wanted to do differently, though. We also had a vision to ignite an “End of Philanthropy” movement–and create a new corporate philanthropic model that would be easy for all companies to embrace and ultimately effect positive change.

What’s the matter with kids these days? Everyone ending stuff all the time. Death of Environmentalism, End of History, End of Politics as We Know It. Ending is just the effect of a better way of doing things, no? Why so negative? Marc, I kid.

This is the End of this Blog Post.

VLOOKUP(), new to me

Thursday, May 1st, 2008

Some days it seems like I live in Excel. I do a ton of data manipulation in my CRM projects. I use Access a lot, because I can churn out queries to relate data together for Inserting or Updating in Salesforce.

Excel and Access formulas are some of my best tools for hacking through the tall grass of customer data and getting to the root of it. Funny, then, that a powerful formula like VLOOKUP() escaped me until yesterday.

VLOOKUP() lets you do a join between two data sets that are in Excel. It doesn’t have the power of Access queries, but if all you want is the Salesforce Contact Id, this can make it really quick.

From the MS Help:

VLOOKUP searches for a value in the leftmost column of a table, and then returns a value in the same row from a column you specify in the table.

That explains it, no? Nice help file. I’ll try to describe the process in English.

  1. We had a sheet of Donations for Contacts, but only had the Legacy ID for the Contacts
  2. We had already insterted all the Contacts to Salesforce.com with their Legacy Ids
  3. We pulled them out with the data loader, just Contact ID and Legacy ID
  4. We created a new sheet and put the data in there, making sure the furthest left column was Legacy Id
  5. We named the data range “Contacts”
  6. In the donations sheet, we created a column for SF Contact Id, and put this formula in there =VLOOKUP(B2,Contacts,2), where B2 is the Legacy Id on the donations sheet, and the 2 tells Excel to get the data in the second column of the Contacts range.
  7. The Contact Ids are then shown in that Column and can be used to create Contact Roles for the donations.

Joins without a database!