Letem světem Salesforcem aneb Salesforce volá admina

Před pár měsíci jsem měla super příležitost, působila jsem jako globální administrátor pro Střední a Západní Evropu. Mým úkolem bylo spravovat systém Salesforce, dohlížet na funkčnost, kontrolovat probíhající joby, dohlížet na kritické updaty. Ale hlavním úkolem bylo celkové pročištění prostředí. Identifikace již nepoužívaných či málo používaných polí. Jako pomocníka jsem ocenila aplikaci Field trip z App Exchange. Oříškem byly picklist hodnoty a četnosti jejich využívání. Tady se jako užitečný nástroj hodila Developer Console a SOQL dotazy. Pro základní orientaci console dobře posloužila.

Z tohoto “čištění” jsem plynule přešla do oblasti User Experience (UX).

Kladla jsem si otázku: proč běžný uživatel potřebuje na page layoutu vidět velké množství polí? Já jako uživatel nechci rolovat a hledat povinná pole napříč celou obrazovkou či ještě o kus níže.

Pojďme to vyřešit, identifikujme pole, která jsou pro sales uživatele důležitá, zbytek pro něj odstraňme z page layoutu nebo omezme pomocí oprávnéní na profilu, vytvořme a vhodně distribuujme permission sety.

I zde administrátor může narazit na úskalí. Uživatel je zvyklý vidět svou obrazovku a každá změna, i když k lepšímu, může narušit jeho vizuální orientaci po obrazovce.

Cílem by mělo být připravit pro uživatele příjemné obrazovky s minimem polí, s minimálním množství manuálních vstupů. Čím více je po uživatelích požadováno vyplňování mnoha polí, uživatel logicky volí cestu nejmenšího zla. Pak se v polích objevují vždy jen první hodnoty z 20-ti řádkového seznamu picklist hodnot. Nebo se osvědčeně volí hodnota „Ostatní“. Zadává se číslo 0 či tečka, záleží, co systém dovolí zadat do polí.  A tím se vytrácí původní super myšlenka dozvědět se co nejvíce o zákazníkovi.

A od UX, od schovávání/mazání nepotřebných polí, tlačítek, nefunkčních linků pro sales reprezentanty byl jen malý krok do oblasti Security. Proč by měl ten a ten uživatel mít přísup k tomuto poli, proč by ho měl editovat? Pojďme upravit securitu na Profilu. Pro klíčové bussiness uživatele nastavme vhodné přístupy. Pro případ potřeby si pohrajme se Sharing pravidly. Držme minimální počet profilů a snažme se více zapojit permission sety. Salesforce nám pomáhá, aktuálně nám připravil možnost sdružit několik permission setů do jednoho (Permission Set Groups). Opravdu manager nepotřebuje mít svůj vlastní profil, nepotřebujeme v systému udržovat profil, který má pouze jednoho aktivního uživatele. Takže jsem začala sjednocovat „příbuzné“ profily a tím snižovat množství používaných profilů. Hrála jsem si s permission sety, omezovala přístup uživatelů – např. odebírala jsem systémové oprávnění: Export Reports, Manage Public List Views, Manage Reports in Public Folders….

A pak mé administrátorské hrátky zkřížil versovací systém, GIT. Ale to už je jiný příběh:)

Při práci mám ráda zábavu a zpestření. Potřebovala jsem oživit nudnou šeď Salesfoce Classicu. V reportu oceňuju barvičky z podmíněného formátování. Na několika projektech jsem si mohla vyzkoušet práci s  Graphics Pack.

Před pár málo dny jsem objevila emoji a tak nyní experimentuji a používám https://coolsymbol.com/emojis/emoji-for-copy-and-paste.html

Emoji pro zvýraznění informací

Takové zvýraznění pomocí Emoji používám v přehledu reportů, v list views.

A pro znalce už jen připomenu aplikaci pro správu hesel pro různé Salesforce instance.

Uložím si přihlašovací údaje pro produkční a testovací prostředí, odliším barevně a získám rychlé rozlišení tabů, vím, kde právě se pohybuji:)

A na co těším v dohledné době? Na chystaný přechod na Lightning a na nové možnosti designu stránek. Chci si vyzkoušet Dynamické stránky v Lightningu. A obzvláště se těším na léto. Současná situace mi otevřela oči a shledávám, že práce z domu je pro mě prioritní. Upřímně i to byl můj prvotní impuls, proč jsem začala před lety se Salesforce. Ta možnost zapnout počítač odkudkoli, kde je internet a řešit zajímavé úkoly, byla důležitým faktorem pro nasměřování mé Salesforce kariéry. Hlavní je, mít se stále kam posunovat, a to platí nejen pro oblast Salesforce.

Hana Srnová

Hana Srnová, Salesforce nadšenec, strážce rodiny, ochránce přírody a kulinářský experimentátor.

Napiš komentář, díky!

Your Own App in Salesforce

I feel this should be part of any customisation you do for client – create an app with objects they use.

It is super simple, it the Setup find App Manager and create a new one. Here you can specify logo, name and colors, which tabs should be available on top, whether users are allowed to change them or change their order and even bottom pane (utility bar) with some quick shortcuts. Nice feature is, that for each app you can specify different page layout and this way really extend how „at home“ will users feel.

Lightning App

As you don’t have all objects available on the top bar, when you need some you don’t use often you need to click on the 3×3 at top left corner (also called waffle), where you can switch to other applications you have, your community, 3rd party apps (if you have them connected with Salesforce) and choose any object you have access to.

Console App

If there is a game changer for at least half of my customers, it is console app. The main difference is, that in the normal app you by default work with one record and you can quickly switch between different objects, while in console app you typically work with multiple records at once (have them open) and you also appreciate all the details on related records.

Meaning you can „group“ open records as you define (based on their links due to lookup/master-detail fields), eg. contacts will open under account, opportunities as well, cases will be linked with contact and so on. Then when you open a contact it will on the same „tab“ open account as well and any opportunity you open for that account will be opened on the same main tab. And you can open records for several different accounts and each of them will have their own tab – no more open windows in browser, it is all one window and you can easily switch between.

And you can use keyboard shortcuts to speed up your work even more!

Salesforce Console App

Plus the fact that you can use split view – on left you can see records and switch between different list view, when you click on a record it will open on the right. That might be productivity booster.

Split view

The downside is that you by default work with one object only and if you want to switch to other you need to switch the object selection (next to the app name on the top bar). Here is one small trick – if you press Ctrl while clicking on the object, it will open in new tab and in the small arrow on the tab you can select Pin, which will do the same as in browser – will pin that tab at the beginning and you can use it to have a shortcuts to your most used objects. No, you cannot set it in mass as admin, each user needs to do it.

Try and get excited as well!

Napiš komentář, díky!

NGO Hackathon #2

Před dvěma lety jsme udělali první NGO hackathon. 24 hodin, 10 týmů, 4 neziskovky, 4 různá zadání. Bylo to super, energie skvělá, spousta lidí jela přes noc a na konci bylo co prezentovat. Akorát pak se nám to nějak zvrtlo, neřekli jsme si (jako CRM pro neziskovky) o pomoc a trvalo snad rok, než jsme alespoň jedno z těch řešení zobecnili, ale teď už ho nasazujeme. S těmi dalšími ani nevím jak to je.

Letos jsme se rozhodli to udělat jinak – máme jednu neziskovku, které chceme během 24 hodin naimplementovat Salesforce včetně vývoje na míru, importu dat a proškolení uživatelů.

14. – 15. 8. Praha

Stejně jako tehdy začínáme v pátek odpoledne a končíme v sobotu odpoledne. I tentokráte budeme dělení na týmy, ale tentokrát podle expertízy, dodávat budeme jednu implementaci. Nebude žádná hlavní výhra kromě dobrého pocitu a pokud se povede sehnat partnery, tak budou alespoň trička na převlečení.

Akce se bude konat v PwC Experience Centru, káva k dispozici, jídlo taky seženeme, pokud budete ráno potřebovat sprchu tak vás tam dostanu a koutek na schrupnutí tam určitě taky najdeme (spacák s sebou).

Koho potřebujeme

Oficiální stránky hackathonu sice tvrdí „Hackathon je určen všem odborníkům, kteří mají zkušenosti s platformou Salesforce„, ale já věřím, že to bude super akce i pro začátečníky, kteří si to chtějí očichat. V tuhle chvíli netuším, že bychom měli minimální či maximální limit na počet lidí (ok, vejde se nás tam max 40, pokud se ještě nezpřísní podmínky díky viru) a já doufám, že když bude dobrý mix zkušených a začátečníků, tak máme dost času na to předat znalosti. A to by bylo super

Tyhle lidi potřebujeme:

  • analytik – nebude tady nic velkého, organizace bude mít dopředu připravené co potřebuje, měla by mít připravené odpovědi, pro kus funkcionalit použijeme náš balíček, ale pořád bude na co se ptát;
  • admin – úprava page layoutů, list view, tvorba aplikace, nějaké ty reporty a dashboardy, tady si vyhrají i ti, kteří jsou začátečníky, ale dokáží přemýšlet o tom, jak to bude uživatel používat;
  • konzultant – nastavení práv, nějaká ta automatizace (flow, process builder), vysvětlení adminům co a jak naklikat;
  • vývojář – budeme vyvíjet relativně zajímavou věc, potřebujeme někoho kdo tomu udělá UI (čti Lightning Component) i logiku – a ta by měla být sakra zajímavá, dynamická tvorba matrixové struktury se spoustou podmínek;
  • tester – bude se vyvíjet, bude se konfigurovat, chtělo by to otestovat. Musíš vědět jak to má fungovat (takže ideálně na začátku poslouchat s analytikem), jak to chtějí udělat (takže poslouchat konzultanty i vývojáře) a pak jim to celé rozcupovat (ideálně aby to dali v sobotu po obědě dohromady);
  • datař – musíme naimportovat data a bůh ví, v jakém stavu budou, čekal bych nějaké transformace, čištění, spojování různých setů dohromady;
  • community specialista – pokud to všechno klapne, tak tady budou Salesforce Communities, což znamená další konfigurace, dopad do bezpečnosti;
  • lektor – v sobotu odpoledne bychom měli neziskovku vyškolit, což samozřejmě může udělat konzultant, ale možná jsou lidi, co to umí líp;
  • dokumentarista – no, asi by to chtělo zdokumentovat, napsat k tomu něco pro uživatele;
  • projekťák – hele, no asi by se hodil, akorát se mu povede udělat maximálně jeden stand-up a to je většinou nenaplňuje 🙂

Umíš něco z toho? Chceš se něco z toho naučit? Tak se přihlaš!

Jak to bude dělat?

Chtěl bych napsat agilně, ale tohle bude ohromný chaos. Ten základ je jednoduchý a za pár hodin bude hotový, data asi budou legrace na sobotní svačinu před obědem, vývojáři se podle všeho budou potit celou dobu (raději jsem zapomněl, zda jsem to odhadl na týden nebo měsíc práce).

Jak jsem zatím potkal na projektech CI, sandboxy a všechny další věci tak mám chuť říct, že na to čas nebude a budeme dělat přímo na produkci, ať nemusíme nic znovu testovat a kontrolovat, zda se vše nasadilo ok. Možná mě vyvedete z omylu na místě, možná už předem, můžeme si určitě připravit něco, co nám s dodávkou pomůže (a nyní mluvím hlavně o vývojářích).

Jdeš do toho?

Moc rád tě v srpnu uvidím. Uprav plán své dovolené, domluv se doma, našprtej si novinky z oblasti, které se chceš věnovat a přihlaš se.

A bude to jízda!

Napiš komentář, díky!

Data migration made easy

Data migrations are the most funny part of any projects. They look easier when migrating Salesforce to Salesforce with about the same structure, but it still a lot of fun. Especially when you want to migrate just subset of data.

Data Loader, DataLoader.io, Talend, Pentaho, JitterBit – all the ETL tools, you name them. You might be able to also put some backup solutions into the equation as they might be able to restore data to other instance.

I had this client, who decided to split their instance into two. All data keep in instance A, some of them move to instance B. Including files, just to have extra fun.

Texei plug-in

I might call myself heavy Salesforce DX user, even though I don’t really use it much compared to some developers. But I’m really happy with the command interface and ability to rerun any command later on.

Luckily, just it time, I heard Fabien speaking about their new DX plugin, which solves extracting and loading data. Exactly what I needed, because I don’t have Talend/Pentaho/JitterBit and doing export/import with Data Loader is a bit of pain, even when you use External Keys.

Plugin installation was super easy (sfdx plugins:install texei-sfdx-plugin), putting together the data plan as well (sfdx texei:data:plan:generate –objects Account,Contact,MyCustomObject__c –outputdir ./data). For each object I just wrote the WHERE formula to select the right one (we created extra checkbox on some objects to mark the records we want to move and we moved all the related to them as well), I started to exclude fields we don’t have in the target instance, but found out it is easier to create a new profile and remove access to them from my user. Being able to setup the mapping in the plugin would be awesome but at the same time extra complication.

sfdx texei:data:export –dataplan ./data/dataplan.json –outputdir ./data and a few minutes of computer time later I had the whole export done including all the relations, sfdx texei:data:import –inputdir ./data and they were in the target instance. Nice, very nice.

Files

From the beginning I had a feeling that file migration will be pain. The data structure for them is pretty complex (ContentVersion, ContentDocumentLink, ContentDocument) plus as I found out in the Doug’s article:

As an admin with “Modify All Data” you can export any classic Note record simply using Data Loader. However, with ContentNote and ContentVersion you can only export the records that are explicitly shared with you or that you own.

This thing confused me from the beginning, that I somehow don’t see enough data in the export and that it is somehow hard to download them.

I did a few things:

  1. create a new custom field (guid__c) on the ContentVersion object, to save a link to record to which the file is linked (I have just 1:1 links in this instance);
  2. run a code, which puts the related record id into this field, so I don’t have to worry about all those mapping later on and can simplify the post-processing (see below);
  3. repeat for each object I need to export and has files linked;
  4. export data from Salesforce.
// get all accounts linked to exported contracts
List<Account> accs = [SELECT Id FROM Account WHERE Id IN (SELECT AccountId FROM Contract WHERE Export__c = TRUE)];
Map<Id, Account> accMap = new Map<Id, Account>();
for( Account a : accs){
accMap.put( a.Id, a);
}

// get all links between account and files
List<ContentDocumentLink> links = [SELECT Id, LinkedEntityId, ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId IN :accMap.keySet()];
Map<Id, Id> mapLinks = new Map<Id, Id>();
for( ContentDocumentLink l : links){
mapLinks.put( l.ContentDocumentId, l.LinkedEntityId);
}

// get all latest versions of files I need
List<ContentVersion> doc = [SELECT Id, Title, ContentDocumentId FROM ContentVersion WHERE ContentDocumentId IN :mapLinks.keySet() AND IsLatest=TRUE];
List<ContentVersion> docs = new List<ContentVersion>();
for( ContentVersion d : doc){
// update their guid__c field with account's id
d.guid__c = accMap.get( mapLinks.get( d.ContentDocumentId)).Id;
docs.add( d);
}
update docs;

Data export is easy, you go into setup, Data Export, check all the right checkboxes and wait.

Include Salesforce Files
ContentVersion might be all we need

Guess what – when I did the export for the first time, I forgot to check the Include Salesforce Files and Salesforce CRM Content document versions checkbox, because I felt that the latest version is saved in the ContentVersion object. I was wrong and had to wait 48 hours before Salesforce would allow me to export it one more time.

A few hours later I got an email, that export was successful and I can download all the data – about 30GB of data split into 512MB chunks. I had to download and unzip all of them, even though at the end I needed about 2GB of them, but there is no way to extract just their subset (recalled the other client we had a few months ago, where they had about 500GB of files in the instance and wanted to migrate about 60GB of them and weren’t willing to provide us with the whole set).

Import of the data was pretty easy after that. In the ContentVersion file filtered only those with guid__c filled, I mapped the old record ids to my new one (as I saved them during migration into extra field), I use R for this operation as it is probably quicker than doing VLOOKUPs in Excel. Plus I had to update the file with full path to the original files on my harddrive.

At the end I got a CSV file with columns as request in the related knowledge article – Title, Description, VersionData (full path to the file on your drive), PathOnClient (don’t ask, it is also full path), FirstPublishLocationId (the id of record to which I want to link it). I set the batch size of Data Loader to 1 and uploaded everything into the ContentVersion object.

It failed about half way through – not enough memory. So I found how to call the Data Loader with extra memory (update the path as you need):

javaw.exe -Xms1024m -Xmx1256m -Dappdata.dir="C:\Users\mhumpolec002\AppData\Roaming" -jar "C:\Users\mhumpolec002\AppData\Local\salesforce.com\Data Loader\dataloader-40.0.0-uber.jar"

Crossed my fingers and a few hours later all the data were uploaded. Uff, it took a bit longer than originally expected, but I learnt a few things. The most important is about the texei plugin, which I can use to uploaded data to scratch orgs in scale, way better that the started data tree command..

Napiš komentář, díky!

Rocking Learning Management in Salesforce

7 great solutions to consider 

Remembering the Dreamforce 2019 Keynote, I hear the vibrant words of Leah McGowen-Hare’s (Vice President of Trailhead Evangelism, Salesforce) on innovation: „If the tech industry has the freedom to innovate, they also have the responsibility to create — create pathways to new professions, pathways that are inclusive of everybody, pathways that are equitable and accessible, because it’s going to take all of us to close the skills gap.“ 

And it is not only the tech sector which must relentlessly improve their ways and tools to keep up with the pace of the ever-changing world which requires every single one of us to gain new knowledge, skills, and experiences every day. This also becomes even more relevant in times of a global pandemic when mankind is put under a great test of readiness and flexibility to be able to fight back with weapons of mass transformation. 

It all comes down to the most burning question, how fast and well we are able to collect, codify, organize all the new information, and finally, how efficiently – as the Trailblazers say – we skill up for the future. What we all need is the right tool to help us succeed, no matter whether you are a teacher learning to set up a videoconference with your pupils, an entrepreneur redesigning your whole business model to accommodate social distancing requirements, or a world leader facilitating a fiery discussion on the current state of the international trade while sitting in your children’s bedroom. 


However, selecting The One and Only platform can be sometimes as difficult as finding Prince Charming. The good news is that I have already done some work to help you get an idea of what is worth considering. When assuming you have a Salesforce-based company infrastructure, it obviously makes sense to evaluate primarily Salesforce product offering and Appexchange apps. The list below is surely not a complete one, every business has different objectives, needs, and requirements, yet it can serve you as the first orientation point before you get your hands dirty and start your own research.

Salesforce Knowledge 

A good old Salesforce Knowledge included in every Service Cloud license gives your website visitors, clients, partners, and service agents space to get assistance through articles. They can be used both internally and externally to share information on various processes, products and services, issue resolution scenarios, and much more.

Unlike other solutions in this list, its use case is fairly limited to customer support. While it offers quite some interactive elements to simplify the lives of agents, the value proposition in terms of features for the end-users is basic. The article is the only format that can be used to store information and even though it supports rich text, making it any more appealing than applying italics to your subtitle is close to impossible. However, if you are looking for a quick fix to your customer support challenges, this is definitely a tool to look into. 

Salesforce KnowledgeBase

Price: included in Service Cloud licenses
Discounted for non-profits: Yes 
Components for Community Cloud: Yes
Link on Salesforce website

myTrailhead

Reinventing their learning flagship, Salesforce introduced myTrailhead to the world in early 2019. Companies now have the ability to empower their employees with a white-labeled customizable version of the legendary Trailhead. Upon purchasing an add-on license to Sales Cloud, Service Cloud, or Platform, you get a chance to create your own engaging, interactive learning journeys, in order to scale your employee onboarding, supercharge productivity, increase Salesforce adoption or to cultivate company culture.

The package offers a series of new objects as well as Lightning Components which makes it very easy to diversify learnings for various user groups. Unfortunately, there are some limitations at this moment, too, limiting custom permission settings and targeted content management.

Unfortunately, the price tag which doesn’t differentiate between learners and publishers either, makes the myTrailhead unaffordable for many smaller and medium enterprises. 

myTrailhead

Price: starting at 25 USD per user per month as an add-on Sales Cloud, Service Cloud or Platform licenses on Enterprise Edition and above
Discounted for non-profits: No 
Components for Community Cloud: Yes
Link on Salesforce website

Appinium: LearnTrac & ViewTrac

Two independent Salesforce native apps come with a wide range of features aiming to inspire engagement and increase uptake of training offerings. Instructor-led training, quizzes, surveys, resources, Zoom integration, gamification, certification courses, you name it. As data-driven platforms, all data is accessible in Reports and Analytics to give you powerful insights, no matter if your users access the content in Salesforce, Community, Chatter, or email. You also get an ability to target it to the right people, making the learning journey extremely accessible.

Therefore, it is fair to say that these two apps are a great solution to various business use cases such as employee onboarding and training, marketing generation, partner certification or customer success service. 

LearnTrac

Price: LearnTrac is for free, ViewTrac starts at 6.5 USD per user per month
Discounted for non-profits: Yes
Components for Community Cloud: Yes (2)
Link to AppExchange separately ViewTrac & LearnTrac

Impact Learn 

Simple, yet true enterprise learning management system manages training to employees, customers, and partners as a flexible solution that can be embedded in Sales Cloud, Service Cloud, Communities, Salesforce Mobile App, or some custom applications. It supports personal and informal learning, mobile access, video, and a bunch of other content formats, designed for modern digital learners.

Hence, it is a strong choice for organizations that want to improve their employee onboarding experience, offer cohesive leadership development, or boost channel enablement. 

Impact Learn

Price: 12 USD per user per year
Discounted for non-profits: No 
Components for Community Cloud: Yes (23)
Link to AppExchange

Cornerstone for Salesforce

Completely redesigned integrated learning solution is coming back to Appexchange from one of the world’s most successful companies in HR software development. It allows sales, customer service, external partners and clients, to consume training as they are working in Salesforce or in Communities. Users can browse, search, and launch courses either from our embedded user interface that is housed in a learning tab in Salesforce or within different Salesforce objects like Opportunities or Accounts. With integrated reporting, you can analyze learning metrics alongside sales metrics to understand outcomes.

Cornerstone

Price: 2 USD per user per month
Discounted for non-profits: No 
Components for Community Cloud: Yes
Link to AppExchange

SAP Litmos 

An award-winning platform for customer-focused enterprises, SAP Litmos can be utilized both for corporate workspace training as well as extended enterprise training. Deployment is fast and easy, with ready-made Lightning components that can land easily in any Sales Cloud, Service Cloud, Community Cloud, or a mobile page.

Enabling rapid creation of the content itself, learning courses can be deployed in minutes and distributed to learners via all devices. While supporting 33 languages, SAML 2.0 and Oauth2 single sign-on, extended API limits, and SOC 2 Type 2 compliance, it becomes a great choice for large demanding clients. 

SAP Litmos

Price: 6 USD per user per month
Discounted for non-profits: Yes
Components for Community Cloud: Yes (10)
Link to AppExchange

Docebo

As the cherry on the cake, there is also Docebo for Salesforce. It is not a native Salesforce app, yet it is a very well designed integrated solution which is definitely worth mentioning. Learners are provided with the opportunity to inject AI-powered social learning in their CRM, supporting how they learn on-the-job every day: through interactive tasks and experiences rather than formal courses and training. Covered use cases vary from internal sales enablement, partner program management, customer engagement, improved strategy, or creation of a new revenue stream with paid content.

The integration can be easily set up thanks to their interactive guide and it works perfectly with Classic and Lightning, including Communities. The only downside is that it currently doesn’t support mobile devices. 

Docebo

Price: starting at 3 USD per user per month
Discounted for non-profits: No 
Components for Community Cloud: Yes 
Link on Docebo website


I know, there are so many of them and they look great, right?! If you are now contemplating how to proceed, let me share with you my two cents. When working on a project for an international non-profit in desperate need of an affordable and powerful platform to provide their various stakeholders with an opportunity to learn, I have personally preferred the LearnTrac & ViewTrac solution. 

Their amazing sales team alongside an incredible CEO Steven Jacobson has been tremendously helpful as they are genuinely committed to making their customers successful by offering very reasonable deals, fast technical support and expert consulting. On top of that, the product itself is easy to use, has extensive well-thought-through documentation and very flexible settings, it follows modern principles of effective learning, and makes it all fun and cool. 

So while being a huge Trailhead ambassador, I dare to say that the ultimate combo of ViewTrac and LearnTrac is totally trashing myTrailhead on every level apart from the confetti celebration thingy when earning a new badge which I will happily give up on! 


Katka Vokrinkova 

Katka Vokrinkova
  • Certified Salesforce Consultant getting stoked about every new Trailhead badge, latest release notes, and cool Lightning components.
  • Cross-functional tech project & product manager with 10 years of international experience.
  • Excited never-settler continuously looking for opportunities to change the world.
  • Passionate traveling photographer collecting extraordinary stories of ordinary people.
  • Zero waste ambassador. Salsa dancer. Service dog trainer. 
Napiš komentář, díky!