O Salesforce v nezisku

Neziskovým organizacím Salesforce poskytuje v rámci své Pledge 1% aktivity 10 licencí zdarma a v Česku (i ve světě) to hodně organizací využívá. Ať už pak ke své činnosti používají AFN (Agentforce Nonprofit), NPSP (NonProfit Success Pack) nebo čistý Sales Cloud případně rozšířený o balíček FPack, který zajišťuje napojení na okolní systémy, které se typicky v Česku používají (banky, Darujme.cz).

Tentokrát jsem si pozval Honzu StaňkaDomova svatého JosefaAlenu NovotnouLékařů bez hranic. Dvě různé implementace, dva různé systémy, dvě různě dlouhé zkušenosti.

Zápisky:

  • Salesforce v nezisku není jen CRM – je to nástroj, který umožňuje šetřit čas, peníze a posouvat fundraising dopředu.
  • Neziskovky často pracují efektivněji než byznys – mají méně lidí, méně času a musí víc automatizovat.
  • Výběr nové databáze je strategické rozhodnutí – musí vydržet roky, být podporovaná a rozvíjená.
  • Příprava před implementací je klíčová – vědět, co chceme, proč to chceme a jak to budeme používat.
  • Salesforce pomáhá s datovou kulturou – umožňuje pracovat s daty, analyzovat je a dělat fundraising data‑driven.
  • 10 licencí zdarma je výhoda – ale implementace, údržba a rozvoj stojí čas i peníze, které je potřeba realisticky plánovat.
  • Komunita je obrovská přidaná hodnota – neziskovky se učí jedna od druhé, sdílí postupy a inspirují se.
  • Implementace může být bolestivá – první měsíce jsou často „údolí smrti“, než si lidé zvyknou a systém se usadí.
  • Salesforce je jako lego – dá se postavit téměř cokoliv, ale je potřeba mít hranice, aby se organizace neutopila v možnostech.
  • Automatizace šetří nejvíc času – import darů, děkování, kampaně, telefonní scénáře, mailing.
  • Rychlé poděkování dárcům je zásadní – automatizace umožní reagovat okamžitě, což zvyšuje loajalitu i výnosy.
  • Uživatelská přívětivost je kritická – neziskovky nemají armádu adminů, systém musí být jednoduchý pro běžné uživatele.
  • Salesforce pomáhá zvednout fundraising – méně času na administrativu znamená víc času na dárce a kampaně.
  • CRM není o datech, ale o vztazích – fundraising je budování vztahů a Salesforce pomáhá řídit je ve velkém.
  • Hotové balíčky pro neziskovky jsou velká výhoda – integrace na banky, darujme, kampaně a další věci zjednodušují start.
Listen on Apple Podcasts Listen on Spotify

Napiš komentář, díky!

Middleware – yes or no?

Interesting question every then and now – do we need to purchase a middleware or do a point-to-point integration?

When I recall all the CTA related scenarios, there probably wasn’t any, where we wouldn’t propose ESB in the picture. But worth to know that these solutions don’t have any budget constrains which makes real life decision a bit different.

A great article has been published on SalesforceBen related to this and this exact article was the reason for my blog post.

All the points in the article are valid, but the real life might be different, like on our last project.

Imagine a company, which has existing Salesforce implementation, connected to their DWH via Pentaho, because that’s a tool they know and use for everything. Now they are entering phase 2 with 8 more integrations and the question is obviously on the table.

The answer is not that clear anymore, once you describe the integrations:

  1. Company register, when they are creating a new account in SF they want to just enter its identification number and get all the details from the government run register – no typing, no extra clicks, load also relevant contacts;
  2. Being able to check the company health via a dedicated provider – click on a link, it will open the website with already filtered out the respective company. There is no write back of data into the system, just visual check how it looks now and whether we can proceed with doing business with the company;
  3. eSignature of orders (think DocuSign or similar);
  4. LinkedIn integration as additional source of contacts;
  5. Sending SMS based on activities done in the system and as a reminder for meetings;
  6. Integration with mass mail sending system;

And the list goes on. What might have look pretty clear at the beginning – 8 separate systems to integrate with obviously might be a great reason for purchasing ESB solution.

But when you describe the system and use cases it isn’t so clear to me anymore.

You ask why?

Let’s go one by one:

  1. You will need to develop the custom LWC component which would wrap the logic and user interaction. You can call the end system directly from here or call ESB which would call the system. Added value? When you will change the data provider you can just change the mapping on the ESB level and not touch the SF side at all. But how often that would happen and is it really easier than change the logic in the Apex controller or Flow? Because we would not use any other benefit of ESB – such as retry, load balancing, etc. We might still use it to store the debug or track the usage off-platform, but we can probably do it easily on SF side as well;
  2. This is just a URL link with some identifier – most likely the company identification number – at the end, no added benefit of opening the URL via ESB which would just redirect elsewhere;
  3. eSignature and all the following share one main reason – most likely there is already an existing AppExchange app, which handles that, you can just install and configure it and be up and running. Do you really want to develop your own LinkedIn integration (impossible) or integrate the emailing system from scratch? There is no point and the ESB doesn’t provide any value here.

When does it make sense?

To me the use cases are pretty clear when typically looking in the mirror as the typical company slowly evolves and add additional systems in the landscape. What made sense to do point-to-point at the beginning (like connecting SF to DWH directly) suddenly doesn’t make much sense as you need to develop each integration on its own, update all the data mapping on multiple places if new tables are added, etc.

Once you have complex integration where you need to query one system, based on results query another one, transform data and then act on them – that might be great use case.

When you have a lot of calls going here and there and you might be able to use ESB as some kind of cache to save on the SF calls.

When you need to update data during night based on external system it makes sense to run it off-platform and don’t waste scheduled job development on SF side.

When it is happening in the background and you need to have a way to retry failed operations – it might be easier to do on ESB side rather than develop on SF side.

When you need to connect to on-prem systems and IT isn’t willing to open a firewall to you – you will most likely want to run this operation from inside and just call out to Salesforce.

Not the easiest decision

What looked like an easy choice at the beginning isn’t that easy at the end. You rarely have all the information at start, the fixed system landscape, understanding of the complete data flow. Starting point-to-point might be easier and then, a few years down the road, you will realize it wasn’t the best choice and you should redo everything. Sad, but probably no one should be blamed, that’s life.

Napiš komentář, díky!

Can you calculate follow-up time for us?

I feel like this might nicely fit into the „How I solved it“ series, which Jen is running.

A customer came the other day that they have a new process, where they need to follow-up with a new lead in 2 hours and notify owner and their supervisor if there is a delay.

My initial reaction was „damn, cases have it out-of-the-box but that’s not a reason to change leads to cases and it is really pity“

The next thought was pretty simple – 2 hours, it is just a simple flow which would set a date/time field and put extra two hours there and then scheduled path with email/Slack message.

Obviously it turned out to be a bit more complex:

  • 2 hours only during business hours
  • operating in multiple timezones

In Apex we can use the BusinessHours class, which would solve the check whether we are already after hours or weekend or ban holiday, but do I want to develop this thing? And how to handle the timezones?

And how can I solve it in Flow? Add two hours and check whether it is already after working hours or weekend?  That would be complex and ugly to configure.

Invocable classes and community solution to my rescue, I’m so glad that I know UnOfficialSF.com.

The Solution

There are actually two great solutions on the UnOfficialSF, which I combined.

The first is more complex and can solve almost anything, except using specified business hours to run the calculation (it takes the default one)

The second one can take specific business hours into account, but there is no way how to figure out which of them.

  1. Create a business hours for „each“ timezone – I didn’t really create for each, but only for the timezones (or rather timeshifts?) where present employees are based. What I mean by „timeshifts“? If there are two people, one located in Prague and one in Berlin (both are GMT+1) I would create just one record (e.g. BusinessHours1), where the number means the offset. The potential downside are cities, which typically have the same time shift but sometime to the switch to summer/winter time at different time of the year (or not at all – I still remember some states in Australia have it differently)
  2. As all times in Salesforce are stored in UTC/GMT the first thing the flow does is to calculate the offset of the owner of the record – the timezone field on user record doesn’t specify the numeric value, but the real city, so we cannot just get it from the record but the Apex can tell me the difference
  3. We will find the respective business hours record (remember the number in the name) and if there is none we would take the default one
  4. Calculate the offset via calling the respective method and passing the business hours Id
  5. Have a second after-save flow with scheduled path – the assumption is that there aren’t that many records created on daily basis to hit the limits of scheduled interviews. The reason for second flow was, that when you update the „Follow-up till“ value in the same flow, the scheduled path is not recalculated. Crucial detail when designing these two flows was also the order of their execution – don’t forget to set it right otherwise it might work just on second save or never

Done!

That would be too quick, right? One of my biggest fear was how to post the message to Slack, especially as I want to mention the respective user. Turned out that when you setup the Slack integration it automatically syncs the Slack user ids (or you can map it manually), so it was simple matter of lookup the user id (and their superior) and add the id into the Slack message – the format of <@Id> has been luckily easy to find on the internet.

Take away

Customer happy and one crucial fact discovered as well – to surprise of everyone, most of the leads could wait till the next day for processing (meaning the 2 hours deadline will be only the next day).

While the intention of assigning the person from the respective region was generally good and made sense, turned out that customers have been typically registering rather at the end of the day/after hours and it might be better to assign them to someone from other region, to really get in touch in those 2 hours. Obviously they might have done it as the last task of their day and be already out of office, but who knows and we don’t have data to confirm that.

What about you, do you have some KPIs to track and automation to help you keep up with them?

Napiš komentář, díky!

Free Salesforce License in your org, can you believe it?

Sometimes Salesforce surprises, like a few years back when they introduced the Integration license and gave 5 of them for free in every org.

Now – I mean it is for some time already, but I finally really used it at one client – you can get Platform licenses for free as well.

As SalesforceBen listed in their article, you get 600 Platform Login Licenses when you enable Salesforce Foundations.

But here is the catch, as the license is not available immediately after activating Foundations. The only one you will see is 601 of Einstein Agent and 20 200 of External Apps Login.

You need to reach out to your AE and ask them to add the ‚Agentforce 360 Platform — Login and Dev Provisioning‘ SKU into your contract, which is free of charge. Once signed and a bit of wait you will get Platform Logins into your org. Surprisingly we got 12 000 of them, when I expected only 600, maybe it is somehow linked to the related information in the article – „600 annual logins with 30,000 credits“ but I’m still not able to do the math.

Licenses in our org

What do to with that?

Login license is not like a regular license, you pay/use it for every login by those users, but counting only once for each user during 24 hours. Meaning if the user will login every working day (let’s say 200 days per year) you have enough for 60 people – wow!

Platform license works almost like any other license, there are just a few objects it cannot access such as Leads or Opportunities. But Accounts, Contacts, Tasks, Events, custom objects, etc are available and can be used.

You will also notice why Salesforce has been pushing for Permission Sets for a while – you need to have a different profile for Login users and it is quiet annoying to setup everything twice. Minimum profile extended with relevant permission sets will save you a lot of work.

External Apps Login

Actually what about the other license you get as well? Again, these licenses are used per login, as the name suggest you can use it only for external users (not internal) and they will be able to access Salesforce only via Experience Cloud. Generally they behave as Customer Community license which means less possibilities to share data, managing users via accounts & contacts and a few other things. And they have access only to CRM objects (meaning NO access to leads, cases, opportunities primarily) but you can probably still find some use-case for what to use it.

All those tricky flex-credits

Yes, to enable Foundations you need to enable Data Cloud and we all heard the story about pay-as-you-go, consumption credits, etc. A lot of people are super scared about this, even though Salesforce tried to minimize the risk with all the extra reporting.

From my experience when you just enable these things it doesn’t consume any credits and you are still getting the benefits mentioned above. Already 2 of mine customers are using extra licenses they’ve got for free and so far don’t complain.

Napiš komentář, díky!

O Salesforce s business analytiky

S analytiky

Volné pokračování mé série o rolích lidí v Salesforce/IT ecosystému. Už jsme mluvili o testování, projektovém řízení, s obchodníky, administrátory, head hunterem, s konzultanty i success architektem. Tak teď jsme chytili ten „začátek“ projektu, kde se říká co se bude dělat, proč a případně jak. Připojila se ke mě Nhan Anička NguyenováAnna Michutová, které si roli business analytika užívají už hezkých pár pátků a současně se dívají dopředu, takže jsme mohli mluvit i o technických dovednostech a jejich přínosu.

Zápisky:

  • Analytik není univerzál – role se specializují a málokdo pokrývá vše od byznysu po data.
  • Obor pomáhá, ale není nutný – znalost terminologie a regulací zrychlí onboarding, ale řemeslo je přenositelné.
  • Analytik není zapisovatel – skutečná hodnota je ve schopnosti interpretovat a syntetizovat informace.
  • Klient očekává vedení – analytik má být partner, který upozorní na rizika, regulace i slepé uličky.
  • Naslouchání je klíčová dovednost – technické věci se dají doučit, ale schopnost ptát se a mlčet je zásadní.
  • Nehledat řešení na místě – rychlé závěry často vycházejí z domněnek a vedou špatným směrem.
  • Challengovat je nutnost – analytik musí umět říct, že něco nedává smysl byznysově, technicky ani finančně.
  • Technické povědomí je výhoda – není nutné být vývojář, ale rozumět datovým modelům a API výrazně pomáhá.
  • Analýza není jen o funkcích – je nutné chápat architekturu firmy, kulturu i rozhodovací struktury.
  • Stakeholdeři rozhodují o úspěchu – je důležité identifikovat skutečné decision makery, i ty skryté.
  • Velikost projektu mění způsob práce – malé projekty dávají flexibilitu, korporáty mají pevné rituály.
  • Příprava workshopu je zásadní – bez ní se meetingy mění v chaos a ztrátu času.
  • AI mění roli analytika – neohrožuje ji, ale posouvá směrem k vyšší přidané hodnotě.
  • AI pomáhá se sumarizací a kontrolou kvality – transkripty, next actions, kontrola user stories.
  • Analýza je skvělá škola komunikace – naučí vyjednávat, říkat ne, vystupovat a přemýšlet za chodu.
Listen on Apple Podcasts Listen on Spotify

Napiš komentář, díky!