Consultants & Developers = ❤️

I’ve been so proud on myself the other day when I created this complex flow.

So disappointed when it crashed in production due to Apex CPU limits.

Double proud when I redid it into a combination of flow and Apex.

Let’s find out what and why, but before I’ll tell you my story watch this awesome presentation, which will present you the solution and how consultants and developers can work together to deliver awesome-ness.

The Challenge

My customer wants to generate invoices in Salesforce on monthly basis, they will manually go through the list of opportunities in the month and select opportunities which can be invoiced.

Each invoice can contain multiple opportunities, meaning there is just one invoice per client per month.

If that looks easy (it kind of is), each OpportunityLineItem can be invoiced to different client, in such case the opportunity isn’t linked to the invoice, only the lines.

The Process

The flow was kind of complex.

  1. get all opportunities which are completed but hasn’t been invoiced yet;
  2. present them in screen flow data table so the user can select those to be invoiced;
  3. go throught the selected opportunities and collect unique accounts (sadly we cannot do aggregated query);
  4. go through line items for the selected opportunities, if they are invoiced to account and collect unique accounts from here;
  5. get invoices which has been created for this months already – as the user can select maximum of 200 opportunities (due to data table limits) it might happen that invoice for this account already has been created;
  6. create an invoice for each unique account;
  7. go through the selected opportunities and assign the created invoice;
  8. go through the line items for selected opportunities and assign the created invoice;
  9. success!

What I found out during the process is how limiting it is, that you cannot use something developers call Maps. How limiting it is to loop through opportunities to collect unique accounts as we cannot do so-called aggregated queries in flow. As we cannot use Maps we need to use the Filter element in the flow to filter that one invoice. That it is super slow to loop through all the records. The fact that there isn’t the 2000 process elements limit anymore is cool, but it will drop on CPU time anyway. If you want to get around CPU time you can show screen after some number of iterations as it will reset the limits, but it is annoying to user.

The Solution

You know the solution because you watched the video – it is called Invocable actions. In my case it meant that I went from the flow on the left handside, which took be roughly two days to create and redo, to the combination of simple flow and simple Apex (ok, probably not the best code) on right handside, which I put together in roughly an hour.

The power of Invocable actions - it simplifies flows radically

Learning

It isn’t that hard to write the invocable action, but there are a few surprising moments (which can be seen on the picture above as well).

  1. the method parameter isn’t List<Id> as one would expect when passing multiple records, but List<List<Id>> where the outer list has just one value;
  2. suprisingly you cannot pass the list of selected records directly from data table, I had to loop through them in the flow and add them into another variable, which I was able to pass.

Go for it!

Yes, my dear consultant, there is no reason to be proud on yourself that you created something super complex with loop inside a loop inside a loop. Speak with your friendly developer, who can easily do aggregations, sub-queries, use Map to quickly go through records and all of that in a fraction of time it would take to you. And it will have better readability and at the end less of technological debt.

This is the way to go. And second time you’ll find out you can write it on your own. Because you are the best!

Napiš komentář, díky!

Se Zdeňkem Pejcelem

Zdeňka určitě znáš. Pokud ne, tak bys měla vědět, že pracoval v Salesforce, vybudoval nejrychleji rostoucího Salesforce partnera v Česku a prodal ho, odskočil si na Saharu, zkusil přechod Pyrenejí, koketuje s budhismem, skončil v blázinci, rozvedl se, koupil nové auto, má další plány a spousta dalšího, zdaleka ne v tom správném pořadí.

Martin a Zdeněk v lese

Spoustu otázek jsme nepokryli a napadly mě až zpětně, spoustu decentně přeskočili takže pardon, ale nikdo neříkal, že ho slíkneme do naha.

Má to dvě a půl hodiny, takže ideální čas na středeční dopoledne, do oběda stejně daleko. A dej vědět, pokud jsi doposlouchala až do konce.

Odkazy, které zazněly:

Napiš komentář, díky!

Summary of CzechDreamin 2024

It happened a month ago and I finally found time to go through all those great presentations to learn what I missed during the day. What a long list of learnings.

Selfie time
  • Charly and her recommendation for 1 badge per day to embrace continues learning and growth mindset, specialize and say „yes“ aka embrace challenges;
  • is DevOps about tools or about approach? And your tests tightly coupled to database or just mocking things?
  • backup tools – are they all the same? What a great overview of the tools out there with their short comparison;
  • great screen flow demos;
  • Scale Center – something I want to try and learn more about;
  • how to design knowledgebase;

It could be at least two days with longer sessions 

  • how to lead a great workshop (because it is different to meeting) – whiteboards with sorting and voting, meeting notes, breakout rooms. Definitely something I should still improve;
  • customer journey mapping was a nice seque including the process-driven approach for good architecture – when properly mapped it is so easy to design the solution later on;
  • framework for custom approval process – my head was just spinning from the presentation, pretty heavy (and most likely really useful when you have the right need);
  • how to enhance email campaign delivery process – surprisingly it is also about folder structure, snippets and templates but also about knowing your data;
  • did you have an idea how many use cases AI in Salesforce supports?
What Product Owner does
  • the history of Astro – what a great video we had chance to watch!
  • CTI and comparison of several solutions;
  • CPQ and where is the right fit for it;
  • how to measure and improve adoption of the system and why is it important;
  • traps of integration with flows – coupling, async path, tokens;
  • successful interviews – as I’m just interviewing people it is interesting how small details can make difference (and go/no-go for interview);
  • browser extension for SFMC and how to develop them;
  • Slack and Salesforce flows – too easy to integrate it!

I love the business topics this year, it was not all 100% IT related, I would keep this initiative and add even more from the commercial perspective

  • SOQL and advanced grouping of data – it still amazes me what is even possible with a few extra words in SOQL query;
  • quiz about data sharing – CTA learning paid off;
  • Marketing Cloud and Google Analytics – how to configure it so you can understand what is going on;
  • how to do online presentations better;
  • how to use CRM Analytics to calculate data and push them back to Salesforce;
  • best practices looks like they work;

Can we fit in multiple keynote speeches into one conference? 😀 I absolutely loved this years one

  • flows and guest site – what about hashing the IDs for added security? Plus much more;
  • 7 sins of project management – communicate early and often, don’t be afraid of long risk log, set expectations, don’t flirt with scope creep and a few more;
  • great features of Financial Services Cloud;
  • tips for business growth with Marketing Cloud Account Engagement;
  • and much much more.

420+ people joined us for a day full of learning across 6 paralel tracks, for 50 % of them it was first CzechDreamin (shocking ratio for us!) and 50 % of them were from abroad (awesome that Prague draws them so much). Weekend spent wit a trip to Kutna Hora to enjoy some traditional place in Czechia.

People taking their own pictures

I enjoyed my challenge during the welcome speech to speak just in sentences of 4 words. Great challenge on short notice, surprisingly hard, feedback I’ve got was, that people really tuned in to understand what I want to achieve (and hopefully remember more).

No photo booth this year, which I didn’t miss personally, but we involved FYFT and Škola improvizace to provide some relaxing activities to attendees. Traditional coffee by The Miners and tea provided by Meetea, the whole catering run by Zatisi Catering and for dinner we got some extra from Kuchařky bez domova.

FYFT equipment

Plenty of great photos taken by our photographers, a lot of new connections made, plenty of memories.

Will we be back next year? The team said loud YES! and we will share more details after the summer. Stay tuned till then.

The whole team including volunteers
Napiš komentář, díky!

Salesforce v Česku s Martinem

Dva roky si povídám s lidmi kolem Salesforce a tohle tady ještě nebylo – Martin (Vágner) se rozhodl, že by bylo fajn se dozvědět víc o mě a tak mě vyzpovídal. Díky za to, hned si nepřipadám tak hloupě, jako kdybych se rozhodl vyzpovídat sám sebe.

A o čem jsme se bavili?

  • tom kdo jsem;
  • jak jsem se dostal k Salesforce;
  • CRM pro neziskovky, které mi pomohly k rozvoji;
  • Trailheadu;
  • CzechDreaminu;
  • úspěšných a neúspěšných projektech – koukám na vás Zdravotní klauniCEELI;
  • tajných zdrojích pro Salesforce CTA a Salesforce MVP;
  • jak proniknout do Salesforce;
  • které certifikace mi nešly a že je to normální;
  • budoucnosti Salesforce;
  • generačních výměnách ve vedení firem;
  • mém LinkedIn postu o náboru lidí (který je mimochodem pořád aktivní a snažím se spojit se všemi, kteří projevili zájem);
  • Slacku, Tableau a dalších produktech včetně nových rolí, které se v ekosystému objevily;
  • networkingu, komunitních skupinách a konferencích.
Listen on Apple Podcasts Listen on Spotify

Napiš komentář, díky!

Do surveys in a seconds – SurveyVista

During the CzechDreamin conference and after we always want to get some feedback. Historically we used Kahoot for that, but with the pricing they invented a few years back it wasn’t really possible anymore. So for the last a few years we used AhaSlides, which worked really nice, had good pricing and looked good.

This year we got as a sponsor Ardira, the company behind the SurveyVista application for Salesforce. As part of the sponsorship we could use the app to collect all the feedback.

At first I’ve been scared, becaused they offered a few hours long workshop to help with the setup and I was like – cannot I just install in and use in 5 minutes?

Luckily that’s exactly how it works – you install the package, create a new survey with all its question in easy to use interface, which allows you to specify all those different types of questions, make them mandatory or allow to put comments. And if you fancy you can go deeper, style their appearance, link them in between and conditional show, make some scoring of the whole results based on answers and much much more. Automatic progression to next question if you can select just one answer and many many more small tricks included.

What’s important is all those things which „just works.“ One of them is the anonymous collection of answers, where you just spin up a new community/experience site, some simple and well documented configuration of permissions and you are good to go.

I didn’t find a way how to guide users throught the questions – as you can do in Kahoot/AhaSlides but obviously I didn’t look well enough as the quiz functionality is available as well.

Of course you can link it to Salesforce records, do automation and all those things we take for granted.

There was one task I didn’t look forward to – make sense of the data, meaning creating a dashboard which would show me the answers. Luckily that’s again something available out of the box, which you can open directly from the survey and you see all the answers in appropriate charts to understand the answers.

Final statements? What a great product, even though it was totally new to me, I had to install it in our org and do all the configuration from scratch – it was as easy as with AhaSlides and allowed me to achieve more.

Small downside I realized when sending the final feedback form? It looks like you cannot create one screen with multiple questions, such as collecting name and email on one screen. But that’s really just a minor thing and I didn’t spend much time trying to figure it out.

Napiš komentář, díky!