Unleashing the Power of Salesforce Flows: Introducing the Flow Visualiser Extension for VS Code

Salesforce Flow Visualiser VS Code Extension

In the ever-evolving landscape of Salesforce development, efficiency and clarity are key components of success. As developers, we often find ourselves navigating complex flows, seeking ways to enhance our understanding and streamline our workflow. Enter the Salesforce Flow Visualiser extension for Visual Studio Code, a game-changing tool designed to revolutionise the way we interact with and visualise flows right from the heart of our Integrated Development Environment (IDE).

Salesforce Flow Visualiser VS Code Extension

Created by me, this extension provides an intuitive and immersive experience for visualising flows within the familiar environment of Visual Studio Code. Say goodbye to the days of staring blankly at flow XML files, or having to jump into an org, and let’s embark on a journey to discover how the Salesforce Flow Visualiser extension is set to transform your development experience.

A Seamless Integration

Imagine having the ability to gain a holistic view of your Salesforce flows right from your trusted VS Code workspace. The Salesforce Flow Visualiser extension seamlessly integrates into your development environment, providing you with a comprehensive visualisation of your flows without the need for constant context-switching.

With just a few clicks, developers can now unlock a visual representation of their flow logic, making it easier to comprehend complex structures and dependencies. The extension supports a range of flow types, ensuring that whether you are working on screen flows, autolaunched flows, or trigger flows, the Visualiser has you covered.

Understand with Ease

The extension not only offers a visual graphical representation of the Flow logic, but also offers up easy-to-read tabular views of other flow metadata including the defined resources (variable, constants, and formulas) and any start conditions that might have been defined.

The flow diagram can be zoomed in/out (for those rather large flows that we like to pretend we haven’t got) and can be even be saved out to a .png file for inclusion in documentation and even part of our git repository.

Get Started Today!

Ready to elevate your Salesforce development experience? Head over to the Salesforce Flow Visualiser extension on the VS Code Marketplace and embark on a journey of enhanced clarity, efficiency, and productivity. This creation is set to redefine the way we interact with and understand Salesforce flows – don’t miss out on this transformative tool for your development arsenal.

Creating Salesforce Preview Release Scratch Orgs – Error VR-0003

For a couple of releases now we’ve seen that creating Salesforce Scratch Orgs

on a preview release has been throwing us errors. During this last release window though it now seems we at least no what the issue is.

But first a bit of background. Salesforce provide three major releases a year (Winter, Spring, and Summer), and they provide the ability to get preview access to these for customers and partners so they can test their organisations and implementations prior to the release being rolled out to production. This preview access includes Pre-release sandboxes, and once normal sandoxes rollover (usually ~ 1 month before production) then you can also create scratch orgs on the preview release also.

For our work at Caddify, where we have a no-code tool for building mobile Companion Apps, access to these pre-release and preview orgs is a key part of our process to ensure that our product and apps will work as expected on any upcoming Salesforce release. As I have said though for the last two releases the SFDX CLI commands used to create these preview scratch orgs have been failing, specifically with this error;

ERROR running force:org:create: The request to create a scratch org failed with error code: VR-0003.

I was getting this regardless of whether or not I used a CLI flag to request the org or if I used the config file to define the “Preview” state.

Following on from initial conversations with the folk behind the SFDX CLI it seems that the issue lay somewhere internal to Salesforce processes, and after a helpful dialog with Salesforce support the issue was resolved. It seems that some “internal Instance Mapping table” was missing entries. SF support have now added these and my Preview scratch instances are working.

We have added UMEA instances in Spring’23 to Scratch/Sign-Up routing internally our internal Instance Mapping table

I hope knowledge of this issue, and the cause and cure, will be helpful to others who might run into this.

The Salesforce Feature Release Flow, and Developer Previews

I’ve been recently reading about implementing DataWeave in Apex on the Salesforce platform. At the time of writing the feature was in a stage called Developer Preview and I was interested where this fitted into the standard Salesforce Feature Release Flow, in terms of what the next stage would be after Developer Preview (e.g. Beta or GA).

After some conversations (in the Good Day Sir podcast slack community) it turns out that in the next Salesforce release (Spring 23) that DataWeave will be in Beta, so it seems the flow is as follows;

Pilot ➡️ (optional) Devloper Preview ➡️ Beta ➡️ GA

 

First Contribution to the SFDX CLI

I’ve been pushing some of the non-technical folk within Caddify to adopt the Salesforce CLI for some time. I find the ability to manage logins to different orgs a huge win and know that others benefit from this greatly also. And it was during one of these conversations with our CEO that he said “now if it could open orgs in different browsers that would be amazing”… and that got me thinking.

See the plugin’s changes in action in this video.

I have created several SFDX CLI plugins that we use internally (mostly managing scratch org creation and setup) and am very familiar with node and TypeScript so saw this as a great opportunity to see if I could implement a change that meant the DX org:open commands could target specific browsers on the user’s computer.

I had read – fairly recently – about the new modularisation of the SFDX CLI project, and was excited by this as I remember hearing from the Salesforce folk years ago when SFDX was initially released, and I asked about whether or not they’d planned to open source it all, and was told that it would be indeed be one of the end goals. Anyway, off I went to find the repository that supported the org namespace. After forking the project and pulling it down to my local development environment I was able to see that made use of the open node package, so in turn I made my way to their npm page to see if anything existed already to support “browser targeting”… and there it was, the project supported optional parameters to achieve just what I was after.

Within less than half an hour I had a working proof of concept on my local machine. I then turned to the Contributing section on the DX repo to see how I could get involved, and from there I created a new issue against the repo, mentioning that I’d love to create a PR to implement the new functionality. Only a short while later I had a response from the team, welcoming my input.

I proceeded to more properly implement the change (you know, with tests and that) and submitted my PR. I was honestly bowled-over by the welcoming, supportive, and helpful responses to my PR from the whole team. I was given guidance on naming, implementation, help messages, and all sorts… and I guarantee that the end code that was merged into the plugin’s repo was many times better than my first iteration. Huge thanks to Shane McLaughlin and the whole team for their support and patience.

This new feature is available in the v1.9.0 release of the plugin-org plugin.

In short, the new functionality is really useful, and I’d love to hear your thoughts on it, and also, if you think that the DX CLI could do with new features or improvements then dive on in and get involved.

Salesforce Vidyard Video Playback

I personally like to watch a lot of informational videos, I find this a good way to learn. One thing I do like though is being able to change the playback speed.

Sadly a lot of the Salesforce videos I watch are published through Vidyard, and for some reason Salesforce decide to not offer the option to change the playback speed via the video settings menu. There is good news though, and this comes in the form of hacking the video URL through the browser devtools.

Here’s a quick video demoing how to do it, but in short you want to add an extra query parameter to the video URL used. In the demo I add &speed=1.5 to the end video URL to enable me to watch the video at 1.5x speed.

I hope this helps you too.

Understanding the Salesforce Security Review with Amnon Kruvi

London Salesforce Dev’s Meet – April 2021

The latest installment of the London Salesforce Developers’ Trailblazer community meet (I’m sure the title gets longer every month) was another ripper, and this time it was a musical one.

We were once again honoured to have our co-organiser – and Salesforce MVP – Amnon Kruvi presenting for us, and this time on Understanding the Salesforce Security Review.

The Salesforce Security Review is a process that all apps need to go through if they’re to be listed on Salesforce’s AppExchange (this applies to paid-for as well as free apps), and it’s notorious for tripping folk up. At MobileCaddy we have recently just been through this process with our latest product Caddify – a no-code Companion App builder – and I’m all too aware of the pitfalls of the process (my scars are still raw). This is not to say that I’m not a fan of the SR (security review) process as a whole, as our application certainly improved in some areas having gone through the process (and I personally learnt lots of useful things about security too). The SR is, however, an undertaking that shouldn’t be breached without being prepared for what lies ahead… and this is what Amnon most tunefully delivered in his talk.

Thanks to MobileCaddy for their continued support in processing the videos. And be sure to subscribe to the London Salesforce Devs YouTube channel to be notified of future releases.

If you enjoyed this video you might want to also check out Amnon’s debut on Invocable Methods which is incredible (though it’ll be your earworm for at least a week).

After watching the session you’ll be sure to have picked up lots of points including to Think about Security at Every Stage of your application, and I have a couple of extra tips;

  1. Join the Security Review Partner Chatter Group – The partners and Salesforce personnel in this group are an invaluable and supportive bunch, and their guidance and advice is gold. In fact join the group before your first submission and ask about anything that you have queries on.
  2. Document ALL THE THINGS – If you’re app needs without sharing or does anything at all that sways from the absolute best-practice then make a note of it in your False Positives document.
  3. Take screenshots and copy the text of your Security Review wizard forms answers. If you fail your first submission (which very well may happen) you’ll need to re-enter all these details again.

The London Salesforce Developer’s Trailblazer community group is run by myself, Keir Bowden, Amnon Kruvi, and Erika McEvilly, and we meet every month. You can join our group here, and also follow us on Twitter and see much of our past content on our YouTube channel. We’re always looking for new speakers who are willing to share their knowledge with our community, so if you feel like contributing please get in touch.

As usual big thanks must go to not only my fellow organizers but also our incredible speaker Amnon, our sponsors MobileCaddy and BrightGen, and Salesforce for providing us with some certification vouchers to give away as prizes to our attendees.

Lightning Web Components Specialist – Trouble getting the boatMap Component?

During the completion (as if writing I’m on step 8) of the new ​Lightning Web Components Specialist Trailhead superbadge I had some troubles with step 6 as I couldn’t get access to the source of the boatMap component.

It’s installed from an unlocked package, and being a LWC it’s not viewable in the Salesforce developer console. I was also unable to see it in the Org Browser VS Code plugin… but then I went back to my old friend the CLI.

Using this command I was able to bring the source down into my repo.

sfdx force:source:retrieve -m LightningComponentBundle:boatMap

 

I hope this saves folk some time as they work through this badge.

TCG App visits the LAUG

Oh my, that was a blast! Last night I was allowed to run a data model design session at the London Admins’ Trailblazer Community group, and I for one think it was a great success. The idea of the session was to give a brief introduction to the TCG (Trailblazer Community Group) App and then chair a group discussion on how a data model might evolve from the requirements (and assumptions), and I can just say it far exceeded my expectations.

We walked through the various factors that go into making decisions around forming a data model, and how in some instances there isn’t one-clear right answer. We spoke about lookup vs master-detail relationships, chatted through reporting restrictions, mulled over standard vs custom objects, and spent quite some time going over the use of junction objects.

I do hope the session brought some value to the attendees, as I for one made many notes on things to read-up on, and not only in terms of the objects, but also regarding some requirements, and the next steps.

Here, in all their rough glory, are the notes I’ve made.

  • Support for Virtual venue
  • Master -> Detail – restrictions on types/number of relationships based upon object (types)
  • Standard Event – has auto archive rules and other things to be aware of
  • Event types
    • Meetup style
    • Conference
  • Look into campaign standard object – where would/could we use this?
  • Look into OppContactRoles
  • Use of Opportunity instead of EventSponsor
  • Use OppContactRoles to assign Sponsor contact / Venue Contact etc
  • Use of parent accounts; Don’t have a venue, use accounts
  • ACRs – know which contact to need for venue/sponsor (could be same or different)
  • Would let us have a Sponsor (Account) contact also related to a Venue Account
  • Log who (people in the ecosystem) knows about about specific stuff, who CGLs have asked to speak, and about X?
  • What replaces tags? (Gemma: in the Architects Club they have an object for skills) – Poss use NPSP, as they have this – or now topics?
  • Assets library (recordings, decks, etc)
  • Communities access – talk submissions/feedback
  • Think about a single instance for all CGLs to use – would mean one org, but more licenses, can we approach SF about this. Would mean a super-admin, some folk running this
    Would mean sharing available of talks / sponsors / contacts
  • What about the Events mngmt app from Salesforce Labs – more aimed towards conferences?
  • Also been approached about Open Commons from .org… very exciting
  • Next Steps
    • Look into NPSP, feedback from other CGLs on chatter / twitter
    • Rework ERD
    • Perhaps an open vid call to have input from other CGLs
    • Prob should write a V2MOM – perhaps use github wiki for this?
    • Think about KPIs, metrics, and designs

As you can see, I have quite a few next steps… and I’ve also been approached by a few folk in the success community to chat too.

Introducing the Trailblazer Community Group Salesforce App

As a long time leader of the London Developers’ Trailblazer group, and co-organiser of London’s Calling – the annual Salesforce Community Conference held in London – I’m only two aware of the features and benefits of the Salesforce platform (and ecosystem), and it therefore leaves a bitter taste in my mouth every time I open up a spreadsheet or other non-Salesforce tool to perform some management task for these events.

On speaking to other CGLs (community group leaders) I know that the London Developer group isn’t the only one to use a plethora of spreadsheets to help organise themselves, and I also know that a few folk/groups have built their own solutions on the Salesforce platform too. This bespoke and non-Salesforce tool-set only strengthens the bitter taste, especially when a platform like Salesforce is an obvious choice if you wanted to answer the requirements that are put forward CGLs.

And it’s the bitter taste that’s started me on the drive to create a Salesforce app targeted at helping community group leaders and community conference organisers alike in running their events.

I’m really looking forward to getting rid of this bitter taste, hopefully by drinking our own champagne

Tell me more

The vision I have for the app is based upon a few fundamental principles, which I hope promote and facilitate an inclusive and valuable project;

  1. Fully Open – Not just in terms of the finished project (code + declarative) but also in terms of how the project moves forward with regards to decision making, features, discussions etc
  2. Embrace the Platform – The project shall look to highlight the OOTB features and functions of the Salesforce platform (and keep up with it, as much as possible)
  3. Ease of Consumption – Distributed via a managed package(s) so as to reduce barriers of installation and support a known upgrade mechanism along with adhering to a strict backwards compatibility methodology
  4. Best Practices – This means testing all the things and following industry and platform specific best practices.

Where’s the project currently at?

Two answers to this… firstly the project has a github repo and the current thinking is that this can be used to also house documentation, issues etc, and maybe even use github’s discussion feature too.

Secondly, in terms of where the project is regards design/development, the answer is very young. As part of the desire to make this a community project I haven’t really started working on it until I get this post out, and get input from the wider community. As you can see there is a brief requirements listing on the git repo that comes from just my own thoughts, and I welcome github issues or PRs to add/edit this. I’m also wondering about creating a quip doc for this, to reduce any friction for folk who aren’t so familiar with github.

I’m absolutely sure that other CGLs have put together apps on dev orgs and the like, so it’d be great to get some input from them too.

How do I get involved?

If you have thoughts on the project please reach out to me on twitter (@toddhalfpenny) or raise an issue on the git repo.

What’s next?

I’m actually presenting the project as a data-model discussion case study at tonight’s London Admin’s Trailblazer group, where I’ll chat through some of the base requirements I’ve already put together and hopefully provoke some thoughtful conversations about how, and why, a data model in Salesforce might be designed in a particular way. RSVPs for this event are still open.

I’m also in the process of sharing the project within the CGL community to gather thoughts and hopefully expand and refine the project’s v0.0.1 requirements and a road-map going forward.

So yeah… I’m really looking forward to getting rid of this bitter taste, hopefully by drinking our own champagne.

SFignore: Visual Studio Code Extension for .forceignore files

Screenshot of the vscode SFignore extension in action

Last week I published another SFDX plugin, sfignore. This plugin is designed to help Salesforce developers with the (ever so slightly pedantic) .forceignore file. And now, to make developers workflow even more seamless I’ve published the SFignore Visual Studio Code extension.

The extension is essentially just a wrapper to the SFDX plugin, and as such installation of SFDX plugin is a pre-requisite.

Screenshot of the vscode SFignore extension in action
vscode SFignore extension

The extension exposes the “Add to forceignore” command to the command palette.

This is my first vscode extension, and I hope you find it useful. It is available in the Visual Studio Code marketplace.