Salesforce week 15

A week with two days of travel although not going to Stockholm for a change. This weeks trip brought me to Amsterdam and our Regional Kickoff for the EMEA North region. First day was breakout sessions for the various divisions and then drinks and dinner. Day 2 was the main regional kickoff and after a mindfulness session and group massage we got started. All good fun, good information an a nice place to meet new people and colleagues. Only drawback was the hallways of the venue where the noice levels from hallway conversations really made you tired. All in all two great days with the extended team. Wednesday, Thursday and Friday was either in the home office or at the office in Hellerup. All in all a normal week – but then again not quite…

Tuesday night I joined a conference call heading home from the airport. The conference call was on the pilot program on Salesforce DX which is the new Salesforce Developer Experience. If you are working with Salesforce and haven’t heard or seen anything about Salesforce DX you have work to do. Start at the before mentioned link and then see this session (Deep Dive Into The New Salesforce Development Experience (DX) Architecture) from Dreamforce 2016 showing what it is all about.

It. Is. So. Cool!

Let me give you a bit of backstory as to why. As you may know I didn’t join Salesforce until 3,5 months ago (15 November 2016) so I’m still new to the platform. What baffled me and was about to make me pull my hair out is the fact that the *org* is the source of truth for everything. Data and code. This means that all development and customizations are done in the org using the tools provided by Salesforce. The tools are okay but the workflow is just so old school compared to moderns toolchains and workflows. Salesforce DX turns all this on its head. With Salesforce DX development is source-first, the main way you interact with Salesforce is through the CLI (command line interface) which makes scriptning easy and orgs is something you create and throw away very easily (using scratch orgs). It. Is. So. Cool.

I’ve now had the pleasure to work with Salesforce DX for two days and it is just plain awesome. I’m already using it for some prototyping for the customer I’m working for and it’s just plain awesome. I can easily control my code using git and create different prototypes in branches and easily deploy to scratch orgs for testing. So nice. I’ll definitely be blogging more about Salesforce DX when I get an official “go ahead”. It’s a public pilot but want to air on the side of caution. Say tuned.

What did I learn

  • Salesforce DX rulez the day!
  • The gym at Hilton in Amsterdam can make most gyms jealous
  • Lightning grows more potent by the day
  • Did I mention Salesforce DX rulez the day?!

Status after this week

Trailhead points: 74000

Trailhead badges: 75

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

Salesforce week 14

Short week as I had Thursday and Friday off – or PTO as we call vacation. But a great week. Monday and Tuesday I spent on-site in Stockholm and Monday night I finally got my act together and took the final certification exam of my onboarding and I’m very happy to report that I passed. Yay!! I now have passed all the 5 certifications I needed to pass. #happyDays

It was also my first week of being billable at the customer which was great. Wednesday was spent in the home office. All good stuff!

A thing I find myself doing more of is explaining the Salesforce fundamentals to people internally. Whether the job role is Success Manager, Account Executive, Project Manager or so on we (us at Salesforce) basically all have a requirement to pass at least the test for Salesforce Certified Administrator. This of course yields loads of questions from non-technical people as they simply do not have the same basic understanding of core fundamentals and a skeleton to hang their knowledge on if you will. So I’m using my ability to explain some of these things in very simple terms and answer questions. This is something I really like and I find that I learn more about the platform by having to explain it to people.

What did I learn

  • If you doubt whether you can pass an exam go for it!
  • You learn a lot by teaching a platform
  • There is some joy to actually being billable

Status after this week

Trailhead points: 71150

Trailhead badges: 72

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

Salesforce week 13

Last week I spent two days at the customer site in Stockholm and 3 days at home in the home office. I think. Cannot really remember. Maybe I was in the office one of the days. Oh well ๐Ÿ™‚ It’s starting to become normal to go to Stockholm and family life and work life is starting to work out. It seems like it will work for us. Customer project wise I almost finished the Lightning Component I’ve been working on for the customer and even made small changes to also make it work in Salesforce1. With both the web UI and the mobile UI being based off the same technologies make that pretty easy to do. Of course there are still things to address but they are mainly to do with the inherit difference in how users work on mobile vs on a desktop.

I actually thought I was done with the component last week but then I realized that writing test cases are required to deploy code into Salesforce. An org code coverage percentage of 75% is required. So this week I’m going to write the test cases for the server side controllers (written in Apex). One of the things which has been fun is that it’s very different writing code for production release than writing for the sandboxes or exercises I’ve been doing otherwise. For one normal coding practices like documentation and comments are way more important but also things which is less obvious start rearing its head. Security for one… I suddenly had to stop and consider object and record access for the custom objects I use for the solution. For this solution it wasn’t a big issue but one of those things that isn’t necessarily required for a PoC / sandbox implementation.

I’ve also started to figure out how to bundle up my solution into “something” I can deploy easily across the various orgs we use at the customer. For now it’s a bit of a kludge using the Apache Ant functionality by Salesforce. It will lukily become way better soon then new Salesforce DX approach become publicly available. If you do not know what Salesforce DX is stay tuned but in short it will turn the whole Salesforce development experience on its head. From the org being the source of truth to being based on a source-first approach so that your source repository becomes the source of truth and all development and deployment runs from the source to the org and not the other way. It looks very promising.

What did I learn

  • The Salesforce Ant extensions are fine to work with but still feels like a bit of a kludge
  • There are CLI extensions for Salesforce but they are not really ready for production use
  • Salesforce DX looks to be the solution I’ve been looking for
  • There is a difference between developing for a sandbox and a production org – remember to write those test cases

Status after this week

Trailhead points: 71150

Trailhead badges: 72

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

Lightning Components as Quick Actions in Salesforce1 and padding

Since Winter 17 we have had the option of using a Using Lightning Component as a Quick Action. In the Lightning Experience in a desktop browser the component is shown as a popup (actually a lightbox) in the UI and in Salesforce1 (the Salesforce mobile app) it’s more of a modal fullscreen dialog. All this is great. Only thing you have to do is to make your component implement force:lightningQuickAction (all declaratively) and it can be added as a Quick Action. The resulting lightbox / dialog will have a header with the action name and a default Cancel button to close the dialog. Again great but what if you want to name the button something else? Or if you need a custom header? Well there is another interface for this called force:lightningQuickActionWithoutHeader. So far so good. The issue is that while this removes the default header and buttons it doesn’t quite cut it in Salesforce1 as the container will still add a default margin around the component. Bummer…

The only way I found to fix this in the component I’m doing now is to add a negative martin on the component itself thereby hacking the UI. The added style is in bold – there is a negative margin to push the UI out of bounds to appear at 0,0 and a width and a height to make sure the header bar looks correctly. I’ve reported this internally and I hope someone will come up with a fix e.g. a new interface to add this explicitly.

<aura:component implements="force:hasRecordId,force:lightningQuickActionWithoutHeader">
    
style="margin: -20px 0 0 -20px; width: 120%; height: 50px"> Back Contact Sync
UI body...
</aura:component>

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)