Salesforce week 12

Week 12 brought me to Stockholm for 3 days, had 1 day in our new shiny Salesforce office in Hellerup (closer to Copenhagen center) and 1 day working from home. I spent most of the week getting up to speed on Salesforce Lightning and developing mockups for a custom component for the customer. All in all it was a great week where I learned a lot and made significant contribution to the customer project although I’m not officially assigned and billable yet (I’m shadowing).

Salesforce Lightning components are very nice and the component framework is cool although it is also pretty obvious in some areas that it’s new and there are round edges to be considered. Custom Lightning Components can be used in many places but unfortunately there are still areas where they cannot be used so workarounds are needed. Also building custom components can both be done from the supplied Lightning UI widgets and custom markup. For now most of what I’m doing resorts to combining custom markup with Salesforce Lightning Design System (SLDS) – I will have to see how much can and should be done using the built in components.

Much more to learn in the time to come.

Sunday it was time for Super Bowl and my New England Patriots came from behind to overcome a 25 deficit to win by 6 in overtime. What a great game!! Not much sleep but there is always coffee 🙂

What did I learn

  • Lots about Salesforce Lightning, Lightning Component and the Salesforce Lightning Design System (SLDS)
  • There are wicked many CSS classes in SLDS
  • Stockholm is a nice city
  • Patriots performed the biggest ever comeback in NFL history to close a 25 points gap to win by 6 in overtime

Status after this week

Trailhead points: 70400

Trailhead badges: 70

Certifications: 4 (Salesforce Certified Administrator, Salesforce Certified Platform App Builder, Salesforce Certified Advanced Administrator, Salesforce Certified Sales Cloud Consultant)

Salesforce week 11

First week on “the job” brought me to the customer I’ll most likely be assigned to in Stockholm. I spent Tuesday to Thursday there and have already delivered something that will go into production in a couple of weeks. Both exciting and scary… The week was basically spent learning about the project, the phases, deliverables and a whole slew of new terminology. All good stuff. Nothing much else to report for now besides Stockholm being a nice city.

What did I learn

  • Some customers actually use Salesforce Lightning
  • What’s it’s like being thrown in mid-project
  • That I will stay at 3 different hotels in Stockholm over the next weeks

Status after this week

Trailhead points: 70400

Trailhead badges: 70

Certifications: 4 (Salesforce Certified Administrator, Salesforce Certified Platform App Builder, Salesforce Certified Advanced Administrator, Salesforce Certified Sales Cloud Consultant)

Salesforce username/password OAuth flow against a sandbox

We had issues today because our OAuth password flow wouldn’t work against one of our sandboxes although the code worked against production. Instead we got this error:

{"error":"invalid_grant","error_description":"authentication failure"}

After Googling and finding this thread it turned out that when using the username/password flow against a sandbox you have to either relax IP restrictions for login or authenticate against test.salesforce.com instead of login.salesforce.com (which of course makes sense).

Below is curl commands for using the username/password flow against a sandbox:

$ curl -d "grant_type=password 
   &client_id=3MVG9X0_oZyBSzHrnzENlR...JSDz0_MiwxyieREuBhtgZJrF7Lzx8542TFpU_ 
   &client_secret=6235860963257688256 
   &username=mikkel.heisterberg%40example.com.sandboxname 
   &password=Passw0rd.SecurityToken" https://test.salesforce.com/services/oauth2/token
{"access_token":"00D6E000000Cpmu!AQ0AQIj4...cGCRqmNnYc6dmgLT09VNoIFXJtHvsPGLqrBs0VlK",
   "instance_url":"https://someaddress.my.salesforce.com",
   "id":"https://test.salesforce.com/id/00D6E000000CpmuUAC/0056E000000OCcCQAW",
   "token_type":"Bearer","issued_at":"1485850119972","signature":"malODIaSULh1siHzdw...pHKjBpWoQcm66UQ="}

$curl -H 'Authorization: Bearer 00D6E000000Cpmu!AQ0AQIj4...cGCRqmNnYc6dmgLT09VNoIFXJtHvsPGLqrBs0VlK' 
   https://test.salesforce.com/id/00D6E000000CpmuUAC/0056E000000OCcCQAW
{"id":"https://test.salesforce.com/id/00D6E000000CpmuUAC/0056E000000OCcCQAW",
   "asserted_user":true,"user_id":"0056E000000OCcCQAW","organization_id":"00D6E000000CpmuUAC",
   "username":"mikkel.heisterberg@example.com.sandboxname","nick_name":"mheis",
   "display_name":"Mikkel Heisterberg","email":"mheisterberg@foo.com","email_verified":true,"first_name":"Mikkel",
   "last_name":"Heisterberg","timezone":"Europe/Paris","photos":{"picture":"https://someaddress.content.force.com/profilephoto/005/F",
   "thumbnail":"https://someaddress.content.force.com/profilephoto/005/T"},"addr_street":null,"addr_city":null,"addr_state":null,
   "addr_country":null,"addr_zip":null,"mobile_phone":"+45 12345678","mobile_phone_verified":true,"status":{"created_date":null,
   "body":null},"urls":{"enterprise":"https://someaddress.my.salesforce.com/services/Soap/c/{version}/00D6E000000Cpmu",
   "metadata":"https://someaddress.my.salesforce.com/services/Soap/m/{version}/00D6E000000Cpmu",
   "partner":"https://someaddress.my.salesforce.com/services/Soap/u/{version}/00D6E000000Cpmu",
   "rest":"https://someaddress.my.salesforce.com/services/data/v{version}/",
   "sobjects":"https://someaddress.my.salesforce.com/services/data/v{version}/sobjects/",
   "search":"https://someaddress.my.salesforce.com/services/data/v{version}/search/",
   "query":"https://someaddress.my.salesforce.com/services/data/v{version}/query/",
   "recent":"https://someaddress.my.salesforce.com/services/data/v{version}/recent/",
   "profile":"https://someaddress.my.salesforce.com/0056E000000OCcCQAW",
   "feeds":"https://someaddress.my.salesforce.com/services/data/v{version}/chatter/feeds",
   "groups":"https://someaddress.my.salesforce.com/services/data/v{version}/chatter/groups",
   "users":"https://someaddress.my.salesforce.com/services/data/v{version}/chatter/users",
   "feed_items":"https://someaddress.my.salesforce.com/services/data/v{version}/chatter/feed-items",
   "feed_elements":"https://someaddress.my.salesforce.com/services/data/v{version}/chatter/feed-elements",
   "custom_domain":"https://someaddress.my.salesforce.com"},"active":true,"user_type":"STANDARD","language":"en_US","locale":"en_US",
   "utcOffset":3600000,"last_modified_date":"2017-01-26T13:49:33.000+0000","is_app_installed":true}

Quick CLI aliases for Salesforce instance info

Today when at a customer we were trying to figure out the release versions the various sandboxes and development environments and compare this info with the version of the production instance. Of course all this is available from status.salesforce.com but clicking around got a bit tedious so I whipped up a quick set of bash aliases for the Terminal. Since the output is also available as JSON it was pretty easy. First I grabbed the jq JSON parser for bash and then I wrote 4 aliases for bash:

  • sf_instance – returns the instance ID (e.g. “na44”) from the hostname. This is useful if you are using a custom domain to access the instance e.g. lekkim-trailhead-dev-ed.my.salesforce.com
  • sf_release – shows only the release the instance is on e.g. “Spring ’17 Patch 5.5”
  • sf_status – shows release version, whether active or not and type of instance (production, sandbox etc)
  • sf_status_raw – returns the raw JSON

Below are examples of usage and the ailases are at github.com/lekkimworld/sf_aliases.

$ sf_help
Salesforce CLI actions:
-----------------------
- sf_status
  Shows status for instance ID
  Syntax : sf_status 
  Example: sf_status na44

- sf_release
  Shows release version of supplied instance ID
  Syntax: sf_release 
  Example: sf_release na44

- sf_instance
  Get instance ID from hostname
  Syntax: sf_instance 
  Example: sf_instance org62.lightning.force.com

- sf_status_raw
  Shows raw JSON
  Syntax: sf_status_raw

------------------------
$ sf_instance na44.salesforce.com
na44
$ sf_instance lekkim-trailhead-dev-ed.my.salesforce.com
eu11
$ sf_release eu11
Winter '17 Patch 18.10
$ sf_release na44
Spring '17 Patch 5.5
$ sf_status eu11
Release Version : Winter '17 Patch 18.10
Active          : true
Status          : OK
Environment     : production
$ sf_status cs85
Release Version : Spring '17 Patch 6
Active          : true
Status          : OK
Environment     : sandbox

Salesforce week 10

Week 10 it all started to get real… All in all my last quiet week. I actually met my manager in person (she’s based in Amsterdam) and I spent more time playing with the Salesforce platform with a specific focus on Service Cloud, Lightning and Salesforce Lightning Design System (SLDS). I also got my first customer project in Stockholm which will be fun. With the planning on my first customer visits came fun experiments planning flights, hotels etc. All good fun.

What did I learn

  • Service Cloud is easy to set up and one can actually do a very nice, full featured, call center implementation in about 1 hour
  • The Service Cloud Console is actually not Lightning although it looks pretty similar
  • Page Layouts needs to be feed based to look Lightning-like for the Service Console

Status after this week

Trailhead points: 70400

Trailhead badges: 70

Certifications: 4 (Salesforce Certified Administrator, Salesforce Certified Platform App Builder, Salesforce Certified Advanced Administrator, Salesforce Certified Sales Cloud Consultant)

Salesforce week 7-9

Wow! Time is starting to fly by. Week 7 I took vacation and relaxed by taking time off between Christmas and New Years. I got back into the office on Tuesday following New Years Eve and promptly started studying for my Salesforce bootcamp. The bootcamp is in San Francisco and I spent all of week 7 preparing and studying for that. We are very much into gamification as is obvious if you’ve ever visited Trailhead. I flew off to San Francisco on Friday and spent all of Saturday and Sunday settling in and watching a lot of NFL. It was Wildcard Weekend so we had 2 games on Saturday and 2 games on Sunday. Excellent!! It also gave me a good excuse to sit in the bar with my laptop, a beer and NFL. What’s not to like?!

Week 9 was spent in San Francisco for the bootcamp. Monday was Becoming Salesforce which is basically culture emersion and learning about the Salesforce Way including volunteering. Tuesday to Friday was bootcamp with sessions, group assignments and presentations. We also went to go on a tour to the various Salesforce buildings in San Francisco – pretty cool!! In the evenings when we got back to the hotel around 7pm it was hanging out in the bar with the other participants from all over the World (India, Australia, Germany, Netherlands, US, Denmark and the UK to name a few). Then off to have dinner and more beer before bed. All good fun and a great experience. It did rain all week however but we didn’t have time to be outside really so it didn’t matter much.

What did I learn

  • When it rains it pours in San Francisco
  • Cmd-Enter submits a Chatter post in Salesforce Lightning – so happy as it is sorely missing in Salesforce Classic
  • Uber is really cool
  • Apparent Embagadero is a pretty long walk from Fishermans Wharf

Status after this week

Trailhead points: 65550

Trailhead badges: 67

Certifications: 4 (Salesforce Certified Administrator, Salesforce Certified Platform App Builder, Salesforce Certified Advanced Administrator, Salesforce Certified Sales Cloud Consultant)

.gitignore for MavensMate

Note to self… Exclude the workspace and project files as well as /config from Git so a .gitignore file should be something iike this:

*-project
*-workspace
config

So in bash something like:

$ echo *-workspace > .gitignore
$ echo *-project >> .gitignore
$ echo config >> .gitignore

Salesforce week 6

Again study, study, study… Since last week I completed 2 certifications which takes me to 4 of the 5 I need. The last is Certified Salesforce Service Cloud Consultant which is looking pretty tricky but I have to find some material on the exam. Did my second round of volunteering – felt good. Closing off the year having volunteered 13 hours. Okay I think. Looking into how I can help for a Salesforce project in Africa. Interesting.

From here on it’s xmas, then new years and it’s time to think about other stuff than Salesforce for a while. See you on the other side…

What did I learn

  • Take the exam – go for it!
  • Sales Cloud certification was trickier than I thought it would be

Status after this week

Trailhead points: 57600

Trailhead badges: 59

Certifications: 4 (Salesforce Certified Administrator, Salesforce Certified Platform App Builder, Salesforce Certified Advanced Administrator, Salesforce Certified Sales Cloud Consultant)

Salesforce week 5

All (well most) of this week was spent – you guessed it! – studying for exams… I tried to take the Salesforce Certified Advanced Admin on Wednesday but due to hickups in the system at Webassessor I had to exit the exam and the new time slot I got I couldn’t do. So the exam is now scheduled for Monday. It’s going to be exciting. Whether I pass or not I’m at the point where I need to see some actual questions to gauge what they are asking for instead of simply trying to guess. My take on exams and certification hasn’t changed much and I still think that while certifications are nice the proof is in the pudding. Real experience is the only thing that matters.

On Thursday I thought that the AppBuilder certification should be attainable given the amount of effort I have been putting into studying so on Thursday night, with the rest of the house sleeping, I took the certification test. And passed!! Very happy. I have now have 2 of the 5 certifications I need.

I also did my first round of volunteering and logged 5 hours on that account at our pre-Christmas Party event on Friday for “Cykling uden alder”. While the whole volunteering thing still doesn’t come easy for me I feel that actually doing it makes it easier. I’m also volunteering all day Tuesday next week which will be good.

What did I learn

  • More on SOQL especially using this nice article on SOQL
  • Questions on the AppBuilder certification is tricky and takes careful reading and rereading
  • Testing field level security should not be done as System Administrator as it settings doesn’t apply when you’ve been assigned Read All Data / Modify All Data. Instead clone something the Standard User profile and test with that

Status after this week

Trailhead points: 57000

Trailhead badges: 56

Certifications: 2 (Salesforce Certified Administrator, Salesforce Certified Platform App Builder)