New Trailhead Modules (and a badge!)

trailhead-bannerHave you checked out Trailhead lately?  Have you seen the new Star Wars movie?  The answer SHOULD be “yes” to both!

Why?

You like imaginary internet points right?  You also like BADGES too, right?

Again, the answer SHOULD be “yes” to both!

CaptureI just went through the new “Build a Battle Station App” Trailhead project and I have to admit it’s one of the best “learn the basics of Salesforce declarative setup” projects that I’ve seen so far.  This one takes you all the way from basic object setup to reporting and SF1 all within about 30-45 minutes of your afternoon.

YOU ONLY HAVE UNTIL December 31st TO CLAIM THIS BADGE!

Don’t stop there!  There’s a whole NEW TRAIL called “Admin Advanced” that yours truly actually helped shape via the “Advanced Formula” module.  Careful – SteveMo was a big one on here too, so you know you’re in for some learning…and owing him a beer when you’re done.

CaptureHungry for some hardcore Apex REST/SOAP callout magic?  There’s a module for you too!  A wonderful post that walks you through the crazy language of Apex callouts and how to master them!

Are you yeti to earn new badges?!

 

Advertisements

SOQL “Select *”

badideaSo, let me start off this post by saying how this is a bad idea for nearly all applications.  Wildcarding columns has performance impacts and kittens die when you do it.  There is a reason Salesforce doesn’t allow you to do this natively.

THAT SAID, I did happen to come across a scenario where I needed to export multiple records to an Excel file, and there were fields being added, removed, and changed on a quarterly basis.  Fieldset?  Sure, I could go that way, but I figure I try something new – a “set it and forget it” option.

So, I decided I needed to create a “Select *” option that:

  • Dynamically returned all fields in an sObject
  • Could reference and return any object
  • Could either reference a set of Ids or just pull the top 50 records
  • Can handle fields I do NOT want to return
  • Handle multi-level sorting of results

So after a little baby punching and kitten killing, I created a monster.  =)

You can check out my GitHub repo here, but this is the high-level explanation of what beast I just unleashed.

// Specify Record Ids
Set<Id> setRecordIds = new Set<Id>();
setRecords.add(whatever);

// Exclude Audit Fields
Set<String> setBlockedFields = UtilityMethods.setAuditFields;
setBlockedFields.add('whatever__c');

// Set Sorts
Map<String, String> mapSort = new Map<String, String>();
mapSort.put('State', UtilityMethods.G_SORT_ASCENDING);
mapSort.put('Name', UtilityMethods.G_SORT_ASCENDING);
// Awaken the monster
Map<Id, SObject> mapRecordData = UtilityMethods.objRecordData('Account', setRecordIds, setBlockedFields, mapSort);

// Do stuff with the results
GatesOfHell.spawnSatanEternal(mapRecordData);

young-frankenstein-song-and-dance-menSo – please don’t abuse this.  I release this monster into the world as more of an academic exercise as well as ya know what – you may have a real need for this at some point.

Do NOT, by any means, use this in your day-to-day Apex coding.  It’s bad and if you use this, you should feel bad.

Now…if you flipped the purpose of this code to be an INCLUSIVE field set instead of an EXCLUSIVE field set, then I’ll give you a pat on the back.  =)

Discover Lightning on Trailhead!

Lightning-1024x512Unless you’ve been living under a rock lately in the Salesforce community, you’ve heard about the new Lightning Experience (“LEX”) due out in Winter ’16!  (queue elated yet half-scared applause and amazement)

Also, unless you’ve been living under a rock or have not read my previous posts, I’m a pretty rabid fan of Salesforce Trailhead as well – and they have come through with bright shiny colors on delivering FOUR NEW TRAILS all around migrating, administering, and developing around the initial release of LEX.  If you are a developer, administrator, or even end-user – there are trails for you!

My biggest questions have been around “what works and what doesn’t so I can accurately advise my clients”.  I’m slowly digesting the new Winter ’16 pre-release notes that dropped at the end of last week, but as I’ve said before – Trailhead content is written in a way to cut right to the quick; give me contextually-appropriate major chunks of information and test me to ensure I comprehended it right.  There are many times where a Trailhead challenge has given me information in JUST SLIGHTLY a different light that (full pun intended) sets off the light bulb in my brain.

Without further ado, I wanted to introduce you to the four new Trailhead trails and my take on each.  You’ll see some overlap between some of the trails – some modules and challenges cross trails to ensure maximum contextual assistance.

Trail 1:  “Admin Trail – Migrating to Lightning Experience”

Where:  https://developer.salesforce.com/trailhead/trail/lex_admin_migration

Who:  Admins and Developers

What:  Four modules walk you through topics such as:

  • What is LEX and is it right for your organization?
    • Yes!  There are things that work and don’t work – this is “version 1” ya know…
  • How to enable LEX for discovery and testing
  • Navigating setup and new LEX-exclusive enhancements
  • Customizing the LEX UI and a re-introduction to Actions
    • Bye-bye URL hacks!
    • Bye-bye Javascript buttons!
    • Bye-bye raw URL navigation!
  • Setting yourself up for a successful deployment

When:  Do this one first.

Why:  Unless your users are a group of supermen and superwomen that can handle any blip that comes their way, LEX is going to be a tough rollout – specifically in user training and “Salesforce Classic” feature parity.  Start your education here.

Trail 2:  “Admin Trail – Starting with Lightning Experience”

Where:  https://developer.salesforce.com/trailhead/trail/lex_admin_implementation

Who:  Admins and Developers

What:  Three modules walk you through topics such as:

  • Introduction to Salesforce and Lightning
  • Diving into the new Opportunity Workspace
  • Customizing Layouts, Actions, Objects, and Fields
  • Executing a LEX education plan and strategy for your company
  • Dropping the hammer:  LEX Rollout

When:  Do this one second.

Why:  LEX is the #1 largest UI-based change in over a decade.  The underlying administration concepts and foundational abilities aren’t changing, but how you and your users access them are.  You need to learn the gaps that do exist in LEX v1 and how to appropriately mitigate or delay each area so you aren’t left high and dry.

NOTE!  This trail was originally designed for brand new admins who are walking into a Winter ’16 org with LEX enabled, but EVERYONE can learn from this module.

Trail 3:  “Developer Trail – Lightning Experience”

Where:  https://developer.salesforce.com/trailhead/trail/lex_dev

Who:  Developers primarily, but Admins can learn a LOT from this as well

What:  Five modules walk you through topics such as:

  • What is LEX and is it right for your organization?
    • Yes!  There are things that work and don’t work – this is “version 1” ya know…
  • How to enable LEX for discovery and testing
  • UI framework and approach
  • How LEX impacts Visualforce overall
  • How LEX impacts ISVs, Packaging, and the AppExchange
    • How to tell if your 3rd party packages are ready for LEX
  • What else is changing with development tools?
  • How to use Visualforce within the LEX framework
    • Overall expectations
    • Navigation
    • Styling
    • What NOT to do in LEX
  • How to use Lightning Components with the LEX framework
    • Components and Attributes
    • Standard and Force.com Components
    • Events and JavaScript handling
  • Lightning Design System (LDS)
    • SURPRISE!
    • Salesforce has released a Salesforce bootstrap framework
    • How to use it
    • How NOT to use it…

When:  Do this one third overall, or if you’re a dev – do it first just for LDS.

Why:  Because you’re a developer and have questions about how your knowledge will convert into the LEX world – flat out.  Salesforce does not have any delusions that LEX will be perfect on “day 1”, nor do they expect that everyone will be able to transition over even within the next few releases.  What they do expect is that you will take the lessons learned here and start making smart design decisions so that when you are ready to move, you can.

Trail 4:  “Sales Rep Trail – Using Lightning Experience”

Where:  https://developer.salesforce.com/trailhead/trail/lex_end_user

Who:  Admins, Developers, and END USERS (yes!  I said END USERS!)

What:  Two modules walk you through concepts such as:

  • What is Salesforce?
  • What is LEX?
  • Working with your Admins
  • Working with Leads and Opportunities in LEX
  • Leveraging Reports & Dashboards (and more) in LEX

When:  This is a great follow-up to the other trails, or a must for your users as part of your rollout strategy – even if you have seasoned veteran users.

Why:  One thing that admins and devs often skip over is the user experience – or how users will be introduced and trained on the system.  We’re so often mired in the details of fields, triggers, and workflow that we completely space that someone will have to advance their Opportunity through the new Sales Path in LEX.  This module is KEY for getting some good ol’ fashioned context.  =)

IN SUMMARY!  (Yes, I’m finally done!)

  • LEX is BIG.  Not like DF keynote/Benioff’s shoes big – like impacting your career big.
  • Trailhead = awesome.  I can’t pick a better word for it.
  • Salesforce has gifted you a fast-track with Trailhead.  Use it.
  • If you want a Winter ’16 LEX org before your sandbox window – you have to do these modules
    • Pre-release org activation is queued and prioritized based on your Trailhead progress
  • Sound off on Twitter!  Mention me (@andyboettcher) when you complete a badge!  I want to hear from all of you!

Come see me at Dreamforce ’15!

dreamforce_15_cloud_logotype_RGBIt’s almost time for Dreamforce ’15!  I’m going to be working my magic, meeting as many people as I can, and speaking at a good number of sessions this year.  Want to come see me?  Sign up for these sessions today!

Tuesday

9:30am-11:30am – Hands-on Workshop: Introduction to Point-And-Click App Building, Moscone West 2020

Are you a new Salesforce Admin or a Super User looking to understand the power of the creating an application with point-and-click tools on the platform? This session is for you! The goal of this session is to help familiarize you what tools exist on the platform and how you can use them to build an app without writing a single line of code. In addition, in between lessons you’ll get hands-on and build a sustainable app that you can put to work today. At the end of the workshop, you will feel empowered about point-and-click app building, confident in your ability to streamline business process, and be engaged with Salesforce.

NOTE!  We’ll be using one of the Trailhead Projects as the basis for this workshop – come ready to point-and-click your way to success!

12:00pm-12:30pm – Trailhead Gladiators, Moscone West Developer Theater

Watch customers go head-to-head in the DevZone arena as they face off on Trailhead challenges. Who will emerge victorious? Join us and find out.

Wednesday

11:30pm-12:00pm – Trailhead Gladiators, Moscone West Developer Theater

Watch customers go head-to-head in the DevZone arena as they face off on Trailhead challenges. Who will emerge victorious? Join us and find out.

Thursday

12:00pm-1:00pm – Hands-on Training by MVP: Enhance Your Processes and Flows with Apex, Moscone West 2024

Processes and Flows are quickly becoming a go-to tool for both Administrators and Developers. Field updates, time-based actions, fast record lookups, and record creates are all possible declaratively. However, what happens when you need to take your process to the next step, and basic Processes and Flows cannot support your business logic? Join us to learn how developers can utilize Apex interfaces and annotations to customize and support Processes and Flows. You’ll leave with an understanding of how to use the ProcessPlugin interface and the InvocableMethod annotation for allowing Flows to make callouts, handle faults, and implement customized business processes. You should have some familiarity with writing Apex, along with a basic understanding of Processes and Flows to fully participate in this session.

1:30pm-2:00pm – Integrations with the Force.com Platform using Custom Apex REST Services, Moscone West Developer Theater (Innovation Theater)

Join us to learn how to create custom Apex REST web services to allow multiple external systems to integrate – more specifically, the architecture of such services to control and sanitize inputs, fully handle internal exception reporting, and return standard outputs that are able to be consumed and handled by any external programmatic solution.

3:00pm-3:30pm – Trailhead Gladiators, Moscone West Developer Theater

Watch customers go head-to-head in the DevZone arena as they face off on Trailhead challenges. Who will emerge victorious? Join us and find out.

Friday

9:00am-10:00am – Designing an interface users will actually want to use, Moscone West Community Campfire A

“Why won’t the users use my interface? It does exactly what they want it to do!” is a common frustration by developers. Change your mindset. Developers work like developers, users work like users. Let’s talk about how to think like a user.

Trailhead: Event Log Monitoring

 

trailhead_module_shield_event_monitoringSay what?  Event Monitoring?  What’s that?

Winter ’15 delivered a little hidden gem – Event Log Monitoring (ELF).  ELF enables the ability to see a lot of the things that are happening in your org behind the scenes that you just could not answer before – such as:

“Did [x] download my customer list before quitting?”

“How fast is my Visualforce Page loading?”

“Who clicked on a record?”

“Holy moly!”

That’s honestly the only phrase that comes to mind when I’m staring at the new ELF files that I can access.  I can’t tell you how many times I’ve been asked just that first question above by my customers…and up until now all I’ve been able to do is offer future-looking convoluted technical solutions to prevent it from happening in the future.

Ok Andy – I’m not a developer and what I’ve read so far is full of something called “Workbench” and “JSON”.

That’s the best part!  Even though this is really an API-only feature, Salesforce and the community at large have created some great tools (even free in some cases) to help anyone take advantage of this critically important new feature.  *cough* Trailhead *cough*

Ok Andy – enough beaming, let’s get down to brass tacks.  How do I use this?

trailhead-emblemOk.  First things first – let’s start with the new Trailhead module on ELF!  Click here to get started.  “Why would I do Trailhead before just jumping in?” do you ask?  In my opinion, Trailhead is becoming the de facto “first stop” for Salesforce training.  The biggest benefits that Trailhead gives you with ELF are:

  1. Well written content
  2. Real-world examples
  3. In-depth yet contextually appropriate knowledge bullets
  4. “One step further” with great tools and visualizations for ELF

Let’s face it – ELF is not declarative-friendly; this is an API-only feature.  There is no standard UI interface for ELF, you download this data as an array of data and then have to make it useful through a number of visualization tools.  Trailhead takes this situation head-on and gives you INCREDIBLE tools such as Salesforce-ELF to easily retrieve the data you want without needing to write scripts and decipher REST in Workbench, and then visualization tools such (free) Cloudlock Event Monitoring Viewer to actually get you answers to burning questions.

Honesty time:  I read about ELF in the Release Notes, but I saw raw JSON responses and immediately shelved this as “wow, that’ll take some time to visualize…I’ll do that ‘later’.” When Trailhead released their module on ELF – I learned more in 45 minutes than I ever would have by following the release documentation and stumbling around on my own.

So, what are you waiting for?  Head over to the ELF module on Trailhead and start now!

How are you using ELF?  Sound off in the comments below or hit me on Twitter – @andyboettcher!

Write your first APEX trigger – livecoding.tv stream!

Well heck, that was pretty cool.  As part of Salesforce Developer Champions, I set up a streaming channel on Livecoding.TV – a new service dedicated to streaming developers developing stuff.

My first experience was pretty slick – I broadcast live to about 40 people how to create your first APEX trigger.  You can watch the recording (it’s in two parts because my connection dropped) at https://www.livecoding.tv/techman97.

Favorite my channel for more streams coming soon!

Productizing your salesforce.com Deployment – Part 1

production-planning-and-scheduling-70

What the heck is “Productization”?  Is that even a word?  Not according to Merriam-Webster, but it’s a word that you will want to introduce to your vocabulary!

We all absolutely love implementing Salesforce – the thrill of setting up a new org (aahh that new org smell!), getting business requirements, and building out exactly what the business needs.  Who doesn’t love doing this part – I know I sure do!

So what happens after “launch”?  Many companies continue at the same velocity as they had during the build phase – which may keep noisy users at bay, but how often do we think about those non-noisy users?  How often do we think about “implementation fatigue”?  What about other areas of the business that want to onboard?

Often, we end up thinking of such things months or years down the road when data starts becoming shoddy, management stops managing from the tool, or you find the users have created a thousand Excel sheets with PivotTables to actually output useful reports because their data source keeps changing.

Enter….Productization.

So what is “Productization”?  Productization is the process of taking your platform and taking it from the adhoc building phase to a more of a traditional enterprise platform “tool” that is predictable, stable, and trusted.  Picking the phrase apart – you are essentially making a “closed” product that your users just pick up and use, similar to how they would use Excel, Word, etc.

One thing that many people confuse with a “Productized” solution is one that is static, closed, or non-responsive to changing business needs – absolutely not the case!  This is where you start really exploring and implementing those fancy themes that consultants throw around such as governance/change management, formalized ideation, or formal on-boarding processes.  You want to create a PRODUCT.

This blog post is the first in a series that will discuss the overall themes and approaches of a “Productization” roadmap.  Today we’ll be talking about user expectations/management, speed/velocity of change, and involving your users in the ideation process.

calm1Let your users breathe!

The double-edged sword that is salesforce.com is that it’s incredibly configurable…by anyone in the organization.  This ability is second-to-none when we’re building and honing in the platform, but all of that effort is leading you to your “release version [x]”.

One of the greatest hurdles to any salesforce.com implementation is adoption; many adoption approaches can be utilized such as “creating [x] records per week”, “managing from the tool”, or “compensation driven from the tool”, but for those doing day-to-day work in the system stability can mean just as much or more than anything else.

Think about it – would you look forward to using a tool at work that you never trust is going to be the same tomorrow?  How much effort would you put in to learning how things work or much less how to make them more efficient if tomorrow everything could change?  Having a tool that is predictable fosters an environment where users trust the system and invest more time/energy to using it.

Slow your roll….

This also introduces an almost backward concept – slowing down the speed at which your business customizes salesforce.com.  Out of the gate, you are making objects, fields, rules, and writing code to beat the band.  Once you get to “release version 1”, you need to switch your thinking away from “YES!  THERE!  HOW’S THAT??!” to “Yes, let me understand exactly what you’re trying to do, and how it can benefit or detriment the entire organization”.  (ok, that’s a pretty major generalization, but roll with me here…)

To associate a silly visual – “the cockroaches scatter when you turn on the lights”.  The same visual can be applied to users and change – if you change your system haphazardly, your users will scatter!

No, I did not just compare users with cockroaches.  🙂

Ideation Collection and Execution

Very few things have the impact on the overall success of your solution more than a fully engaged user base.  Providing your user base with a forum where they can bring new ideas to light, have prioritization input on the implementation of said ideas (with the assistance of a steering committee), and can bring fixes/improvements back to their peers is both empowering and invaluable.

Next up…

Once you throttle back the engines and make the current users and management stable and happy – then let’s start talking onboarding units and users, but next time!