středa 30. října 2013

Stavy záznamů v CRM

Stavy a důvody stavu záznamu jsou speciální systémová pole obsažená ve většině entit v Microsoft Dynamics CRM. Jsou jedním z jeho důležitých funkčních prvků a umožňují využívat systém efektivněji – rychleji a správněji. Přesto jsou často opomíjeny. Proto si dnes stavy, důvody stavu a jejich používání přiblížíme.

Většina systémových entit a všechny vlastní entity používají stavy a mají dva základní stavy:
  • Aktivní (Active)
  • Neaktivní (Inactive)
Aktivní stav je ten základní, běžný. Neaktivní stav představuje něco jako Archiv – záznam sice evidujeme a lze ho zpětně dohledat, ale už s ním nepracujeme (nemůžeme ho měnit, nezobrazuje se v defaultních zobrazeních).

Uvedené stavy nejde měnit (přidat, odebrat, změnit název). Jejich existence a používání vychází vlastně z předpokladu a obecného doporučení, že záznamy je vždy lepší deaktivovat než mazat. Záznamy by měly být mazány v pouze zcela výjimečných případech – např. záznam špatně zvoleného typu vytvořený před pěti minutami.

Záznam uděláme neaktivní kliknutím na tlačítko Deaktivovat, které je vedle tlačítka Uložit. U neaktivního záznamu je zpravidla na stejném místě tlačítko Aktivovat, kterým záznam opět aktivujeme.

Důvod stavu

Důvod stavu je jakýsi podstav či upřesnění hlavního stavu (aktivní/neaktivní). V anglické verzi jsou tato dvě pole nazvána obdobně jako v češtině: Status a Status Reason. Matoucí však jsou interní systémové názvy, které jsou pro Status „statecode“ a pro Status Reason „statuscode“. Běžné uživatele to však netrápí.

Obvykle má každý z hlavních stavů jeden důvod stavu se stejným jménem.
  • Aktivní
    • Aktivní
  • Neaktivní
    • Neaktivní
V takovém případě není nutné/možné s důvody stavu pracovat – žádnou další informaci nepřidávají.

Je však možné je upravovat a vyrobit si tak pro záznam větší množství stavů. Níže uvádím možný příklad pro smyšlenou vlastní entitu Reklamace:
  • Aktivní
    • Přijatá
    • V řešení
  • Neaktivní
    • Uznáno
    • Zamítnuto
Pole důvod stavu tak umožňuje evidovat a sledovat životní cyklus konkrétního záznamu v návaznosti na reálné firemní procesy. Mezi důvody stavu aktivního záznamu je možné přepínat pomocí picklistu (combobox/rozevírací seznam možností), který lze přidat na formulář, jako by to bylo obyčejné pole. Pokud má entita více důvodů stavu pro neaktivní stav, je výběr důvodu stavu nabídnut dialogovým oknem při deaktivaci záznamu tlačítkem v Ribbonu.


CRM nijak neomezuje možnosti přepínání mezi stavy a důvody stavů. Programátorskými úpravami je možné napevno vynutit zadaný firemní proces (např. následnost stavů). Většinou to však není vhodné, protože pak v praxi existuje řada výjimek.

Entity se speciálními stavy

Některé entity, které představují záznamy základních obchodních firemních procesů, mají sadu stavů pestřejší a jejich ovládání se provádí prostřednictvím připravených tlačítek v Ribbonu (horním pruhu nástrojů). Jedná se především o entitu Zájemce, Příležitost a entity představující ekvivalent tištěných dokladů – Nabídka, Objednávka a Faktura.

Tato pětice tvoří sled logicky navazujících entit pokrývajících celý obchodní proces. A zejména první tři entity jsou to, co zpravidla chybí ERP systémům, co je stěžejní částí Microsoft CRM a důvodem, proč si jej firmy pořizují. Silnou stránkou Microsoft CRM jsou nejenom díky jejich samotné existenci ale i díky velmi kvalitnímu zpracování. Stavy a důvody stavu jsou nedílnou součástí těchto entit a umožňují ze systému vytěžit maximum užitku. Jejich neznalost naopak uživatele ochuzuje o mnoho výhod. Je proto více než vhodné se s nimi seznámit a aktivně je používat.

Jako možné nevýhody se jeví jejich počáteční složitost a též občasné nevhodné překlady z angličtiny.

Zájemce (Lead)

Pomocí stavů a důvodů stavů můžeme klasifikovat aktivní i neaktivní zájemce. Deaktivaci provedeme kliknutím na tlačítko Zařadit, kde vybereme konkrétní stav a důvod stavu (viz níže) a případně můžeme vytvořit i další záznamy na základě získaného zájemce.
  • Otevřeno (Aktivní)
    • Nový
    • Kontaktováno
  • Zařazeno (Neaktivní)
    • Zařazeno
  • Vyřazeno (Neaktivní)
    • Ztraceno
    • Nelze kontaktovat
    • Již nemá zájem
    • Zrušeno

Příležitost (Opportunity)

Stavy u příležitosti fungují velmi podobně jako stavy u zájemce – záznamy klasifikujeme na otevřené, úspěšně uzavřené a ztracené. K uzavření slouží opět tlačítka v menu – tentokráte dvě. Kromě označení důvodu stavu je možné i doplnit další údaje o tomto aktu, použitelné pro statistické vyhodnocování.

Sledování populární pipeline obchodní příležitosti – často znázorňovanou grafem typu funnel (trychtýř) – je možné realizovat pomocí pole Důvod stavu otevřené příležitosti. Komplexní řešení této problematiky však už vyžaduje programátorské úpravy.

Z pohledů firemních procesů je důležité stanovit, ve kterém momentu je příležitost považována za vyhranou. Může se to velmi lišit dle charakteru prodávaného produktu/služby, ale také dle pojetí entity Příležitost v konkrétní implementaci – její forma se může lišit od „poptávky“ až po „projekt“. Momentem vyhrané příležitosti pak může být přijetí objednávky, podpis smlouvy, vystavení faktury, podpis akceptačního protokolu atp.
  • Otevřeno (Aktivní)
    • Probíhající
  • Získáno (Neaktivní)
    • Získáno
  • Ztraceno (Neaktivní)
    • Zrušeno
    • Vyprodáno

Nabídka (Quote)

Stavy nabídek jsou již komplikovanější. Situaci navíc zhoršují ne vždy zcela šťastné překlady z angličtiny i rozpor mezi terminologií CRM a skutečným stavem nabídky v reálném světě. Podívejme se nejdříve na hierarchii stavů nabídky:
  • Koncept (Aktivní)
    • Probíhající
  • Aktivní (?)
    • Probíhající
    • Otevřeno
  • Získáno (Neaktivní)
    • Získáno
  • Uzavřeno (Neaktivní)
    • Ztraceno
    • Zrušeno
    • Opraveno
První stav „Koncept“ představuji logicky fázi, kdy nabídka vzniká, upravuje se a ladí. Jediný důvod stavu Probíhající není vhodně pojmenován (nevhodný překlad anglického „In Progress“) a není od věci ho přejmenovat taktéž na „Koncept“.

Stav Aktivní označuje situaci, kdy byla tvorba nabídky dokončena a odeslána/prezentována zákazníkovi. Nabídka tedy „leží na stole“ a my čekáme na vyjádření zákazníka. Nabídka je aktivní v tom smyslu, že je „již aktivní“ v reálném světě, že s ní ještě budeme pracovat a že o takovýchto nabídkách potřebujeme mít neustálý přehled. Nicméně aktivní nabídku již není možné editovat – nemůžeme měnit to, co již „odešlo“, nemůžeme vytvářet rozpor mezi našimi daty a skutečností. Nabídka je tedy uzamčena pro úpravy a jeví se, byť ve stavu Aktivní, jako neaktivní.

Aktivní stav nakonec přepneme do konečných stavů podobně jako u předchozích entit – úspěšné, nebo neúspěšné.

Již aktivovanou nabídku je možné i upravit/opravit. Nicméně při tomto kroku se Vám vytvoří její nová verze (kopie původní nabídky ve stavu koncept) a původní nabídka je přepnuta do stavu Uzavřeno – Opraveno. Původní nabídka tedy již v CRM zůstane – ve stavu, v jakém byla při první aktivaci. A s každým dalším kolečkem aktivace-oprava se vytvoří další kopie.

Veškeré operace se provádí opět z horního pruhu nástrojů. Všechna tlačítka jsou viditelná, ale často neaktivní – to vynucuje určité postupy. Koncept je možné pouze aktivovat. Aktivovanou nabídku je možné opravit, uzavřít (pouze jako neúspěšnou) nebo označit jako získanou, což se dělá pomocí funkce vytvoření objednávky. Pokud chce někdo uzavírat nabídky jako získané bez vytvoření objednávky, je nutné vytvoření workflow nebo programátorská úprava. Nicméně vytvoření objednávky je ve většině firem logický následující krok. CRM nám navíc umožňuje i automaticky uzavřít přidruženou příležitost a uzavřít tak z jednoho místa více záznamu, jakožto i jednu logickou část obchodního procesu. Je to příjemná funkcionalita, není však povinná – třeba pro případy, kdy se jedná o dílčí nabídky velké nebo dlouhodobé příležitosti.

Objednávka (Order)

Stavy objednávek jsou podobně strukturované jako u nabídky. Defaultní stavy a jejich důvody umožňují velmi podrobně členit fáze, které v praxi mohou proběhnout během deseti minut.
  • Aktivní
    • Nový
    • Nevyřízeno
  • Odesláno
    • Probíhající
  • Zrušeno
    • Chybí peníze
  • Splněno
    • Dokončeno
    • Neúplná
  • Fakturováno
    • Fakturováno
Důvod stavu „Nový“ patří vytvářené objednávce. „Nevyřízeno“ nám může značit stav, kdy je objednávka v systému sestavená/připravená, leč ještě neodešla zákazníkovi (potažmo do výroby či jiného procesu) a je stále otevřená pro úpravy. „Odesláno/Probíhající“ značí stav, kdy zákazník obdržel potvrzení objednávky a my vyřizujeme vlastní předmět objednávky (výroba, nákup, dodání).

Pro zrušené objednávky máme jeden připravený důvod stavu „Chybí peníze“ (možná příliš specifický). Splněné objednávky můžeme dělit na splněné zcela i částečně. Poslední stav/důvod „Fakturováno“ je sympatický, ale použitelný pouze v podnikáních, kde se fakturace (alespoň finální) provádí vždy až po dodání, navíc kompletním. V ostatních případech by se stavy vzájemně křížily – nedávaly smysl.

Faktura (Invoice)

Ač Microsoft CRM obsahuje systémovou entitu Faktura, která logicky ukončuje celý sled dokladů, není fakturace pro CRM klíčovou funkcionalitou. V reálných implementacích většinou kompetence CRM končí u objednávky nebo dokonce pouze u nabídky a fakturace je řešena v účetním nebo ERP systému. Stavy a důvody stavu u faktur pro úplnost uvádím, ale pouze výčtem bez dalšího komentáře. Přepínání mezi stavy je řešeno jako u předchozích dokladů tlačítky v horním menu.
  • Aktivní
    • Nový
    • Částečně dopraveno
    • Fakturováno
    • Rezervováno (platí pro služby)
    • Instalováno (platí pro služby)
  • Uzavřeno (neschváleno)
    • Zrušeno (neschváleno)
    • Zcela zaplaceno (neschváleno)
  • Zaplaceno
    • Dokončeno
    • Neúplná
  • Zrušeno
    • Zrušeno

středa 27. února 2013

Práce s více měnami v Microsoft CRM

Práce s více měnami je u firem v malé a otevřené ekonomice, jako je ta česká, častým požadavkem na CRM. Microsoft Dynamics CRM práci s více měnami podporuje. Snaží se přitom tvářit navenek velmi jednoduše a transparentně, přestože procesy na pozadí úplně triviální nejsou. Jejich lepší pochopení umožňuje eliminovat množství omylů a překvapení při používání CRM. Následující obsah článku je volným překladem anglického originálu na toto téma: http://andrewbschultz.com/2011/08/15/crm-2011-multi-currency-limitations-and-workarounds-part-1-exchange-rate-updates/

Již Microsoft Dynamics CRM 4.0 představilo podporu více měn. Funkcionalita vypadala následovně:
  • Pro organizaci byla zvolena „Základní měna“ během instalace.
  • Uživatel si mohl změnit jeho „Výchozí měnu“, což znamenalo, že peněžní částky zadával defaultně v této měně, ač ji mohl manuálně pro každý záznam změnit.
  • Pokud uživatel zadal peněžní údaj v jiné než základní měně systému, systém vypočítal vyjádření této částky i v základní měně a uložil tuto hodnotu také – do dalšího pole, které uživatel běžně nevidí. To umožňuje vytvářet souhrnné reporty nad záznamy ve více měnách (např. tržby z celého světa).
Tohle vypadá docela dobře, že? V teoretické rovině není, co od toho požadovat více. Bohužel v reálném světě, jak to obvykle bývá, některá úskalí tohoto systému existují.

Změny směnných kurzů

Všem je jasné, že kurzy měn, u všech normálních zemí, kolísají. Ač je to neustálý proces, firmy obvykle aktualizují kurzy jednou týdně nebo jednou měsíčně. To obvykle stačí. Směnné kurzy jsou v CRM uloženy v záznamech entity Měna.



Velmi jednoduché. Změníte jednou za měsíc kurzy všech používaných měn. Ale co se stane s již vytvořenými záznamy, na kterých je měna použita?

Například máme vytvořenou Příležitost v Eurech. Co se s ní stane, když koruna posílí? Nejdříve si popišme, jak jsou na formuláři zpracovány měny a kurzy. Každý formulář, na kterém je pole typu měna (peněžní částka), obsahuje 4 pole zahrnuté do jejich obsluhy.
  1. Vlastní pole s peněžní hodnotou.
  2. K němu párové pole, v němž bude tato hodnota vyjádřena v základní měně systému, a které je vytvořeno automaticky pro každé peněžní pole na formuláři.
  3. Měna – lookup pole na entitu Měna. Přidá se automaticky na každou entitu, která obsahuje pole s peněžní hodnotou.
  4. Směnný kurz – desetinné číslo, který vyjadřuje směnný poměr mezi základní měnou a měnou zvolenou pro tento záznam.
Důležité je si všimnout, že záznam má pouze jedno pole Měna a jedno pole Kurz.

 
 
Např. při vytvoření příležitosti v jiné než základní měně proběhne následující scénář:
  1. Nastavím měnu na Euro.
  2. Zadám částku do daného pole, např. Odhadované výnosy.
  3. Uložím záznam. Během ukládání proběhne:
    1. Hodnota Kurzu je naplněna aktuální hodnotou kurzu z entity Měna.
    2. Je vypočítána hodnota odhadovaných výnosů v korunách a uložena do druhého pole.
    3. Obojí proběhne bez ohledu na to, zdali jsou pole měna a částka v základní měně na formuláři nebo ne.
Poté dojde ke zmíněnému posílení koruny. Co se stane s příležitostí? Nic. Alespoň ne okamžitě. Pole Kurz na záznamu není automaticky změněno při změně kurzu měny (nastaveném na Měně). Ale jakmile změním jakékoliv peněžní pole na záznamu, je při uložení záznamu dotažena nová hodnota kurzu a přepočítány částky v základní měně pro všechna peněžní pole. K tomuto přepočtu dojde také při změně stavu záznamu (jako např. de/aktivace záznamu).

Proč tomu tak je?

Zdálo by se, že bude lepší, aby se přepočítaly hodnoty všech otevřených záznamů okamžitě po centrální změně kurzu v systému. Aby k přepočtu došlo co nejdříve, protože měníme pouze vyjádření částky v základní měně. Nijak to neovlivní skutečné částky uvedené na fakturách, nabídkách a dalších. Proč tedy nedojde ke změně co nejdříve, abychom měli co nejdříve aktuální data pro reportování?

Nyní jde pouze o domněnky, ale dobré důvody pro tento mechanismu existují. Jedním z nich je, že nechcete, aby docházelo k aktualizaci záznamů, které se již nemají měnit – např. faktury z minulého roku. Byla vyfakturována daná částka v cizí měně, což pro nás znamenalo určitý výnos v naší měně. Současná změna kurzu na tom již zpětně nic nezmění. Proto k tomu nedochází ani v systému.
Můžete namítnout, že by mohlo dojít pouze k aktualizaci aktivních záznamů. To by však kladlo přílišné nároky na uživatele. Víme sice, že nepoužívané ukončené záznamy by měly být deaktivovány, uživatelé to ale bohužel ne vždy dělají.

Dalším argumentem může být, že u velkých firem by změna mohla ovlivnit třeba desetitisíce záznamů (hlavičky i řádky faktur, nabídek, poptávek, příležitostí ad.). Taková změna by se určitou dobu prováděla, musela by běžet asynchronně, po dobu provádění by byla data nekonzistentní, otázkou jsou i zásahy do záznamů během provádění této změny.




V souhrnu zopakujme, co je vhodné zapamatovat si z článku:
  • Jeden záznam může obsahovat více peněžních polí, ale všechny pouze v jedné měně.
  • Pro účely souhrnů nad více záznamy jsou všechny částky uloženy ještě v základní měně systému.
  • K přepočtu částek do základní měny nedochází okamžitě při změně kurzu měny, ale až po úpravě některého z peněžních polí na záznamu nebo při změně jeho stavu.
K tomu ještě připojuji:
  • Změna stavu záznamu provede přepočet hodnot v základní měně pro všechna peněžní pole na záznamu, ale již to neprovede pro podřazené položky/produkty (Příležitost, Nabídka, Objednávka, Faktura). To může být v některých případech nešťastné – vznik nekonzistencí (součet výnosů jiný než celkový výnos) nebo náročné na opravu (po položkách).
  • Na těchto záznamech je také tlačítko Přepočítat. Lze pomocí něho znovu přepočítat Celkovou částku. Celková částka se přepočítá i při uložení. Aby se záznam uložil, musí se změnit některé z polí. Tlačítkem Přepočítat přepočet vynutíme i bez změny pole. Tlačítko Přepočítat pouze obnovuje Celkovou částku, ale přepočet do základní měny přímo nespouští. Pouze pokud se přepočtem změní Celková částka, je změněno peněžní pole a obnoví se kurz měny atd. Pokud je součet stejný, nezmění se nic. Navíc tlačítko v žádném případě neovlivní cokoliv na jednotlivých položkách.



Customizátoři CRM v češtině musí dávat pozor ještě na nevhodně volenou terminologii, které jsem se při překladu tohoto článku snažil vyhnout.

V CRM je systémová entita „Měna“ („Currency“), jejíž záznamy představují jednotlivé měny používané ve firmě (např. CZK, EUR, USD). Na záznamu Měny definuje její název, symbol, počet používaných desetinných míst a především směnný kurz (pozor, může být i v nepřímém tvaru, tj. 1 CZK = 0,04 EUR).

Problémem je, že typ pole na formuláři, které má obsahovat peněžní částku, je bohužel nazváno také „Měna“ (anglicky „Money“), ačkoliv přesnější by bylo „Peníze“, „Částka“, „Peněžní hodnota“ nebo něco podobného.

pátek 1. února 2013

Dynamics CRM v Chromu, Firefoxu nebo Safari již pro všechny

Po krátkém zdržení oproti Online verzi se 29. ledna objevily ke stažení všechny součásti očekávané aktualizace Update Rollup 12 i pro On Premise verze. Přestože na webu v popisu je uvedeno číslo verze 5.0.9690.3233, po instalaci zjistíte, že verze má ještě "novější" číslo než CRM Online, což svědčí o nutnosti vytvořit nový "build".

Mezi drobnými změnami mě potěšila změna barev a tím lepší čitelnost polí, která jsou "disabled". I když jsem to nijak neřešil, několikrát jsem si v minulosti uvědomil, že jsou  ta pole špatně čitelná.

Při nasazení nejnovější verze je třeba si dát pozor na starší javascripty na formulářích. Syntaxe verze 4.0 přestává fungovat. V Nastavení systému/Vlastní nastavení naleznete 2 nové předvolby, které se týkají zpětné kompatibility javascriptů a nových vlastností prohlížeče Internet Explorer 10. Ty pomohou překlenout období přechodu mezi verzemi.


čtvrtek 10. ledna 2013

Microsoft Dynamics CRM překračuje dosavadní hranice

Aktualizace 11.1. 2013: v této chvíli jsou ke stažení pouze aktualizace pro klienta a jazykové balíčky, nikoliv serverové aktualizace. Důvod zpoždění nám není znám, situaci je třeba denně monitorovat.
S krátkým časovým skluzem oproti plánu byla dnes vypublikována nová aktualizace Microsoft Dynamics CRM, Rollup 12. Díky jedné z novinek nyní řešení Microsoft CRM překračuje své dosavadní hranice a je dostupné i na jiných prohlížečích než Internet Explorer. Podporuje poslední verze prohlížečů Google Chrome, Mozilla Firefox a Apple Safari. (Ten poslední mi funguje překvapivě i na platformě Windows).


Číslo verze je 5.0.9690.3218 a na první pohled novou verzi poznáte podle vzhledu levého navigačního panelu, které je nyní ve spodní části designově jednodušší v souladu s trendem Windows 8 - bez ikon a s větším bezpatkovým písmem.

Nová aktualizace je již k dispozici pro stažení a instalaci na On-premise systémech. V rámci služby Windows Update bude tato aktualizace k dispozici 22. ledna 2013, nicméně netýká se to aktualizace serverových komponent. Ty je třeba instalovat manuálně.
Aplikace nové aktualizace na instance CRM Online probíhá automaticky, první zákazníci jsou převáděni tento týden.

Co se ještě dostalo do této aktualizace?
  • Nové indexy pro optimalizaci rychlého hledání v následujících entitách:
    • Případy
    • Příležitosti
    • Konkurence
    • Kontakty (pole telefonních čísel)
    • Organizační jednotky
    • Propojení
    • Role propojení
    • Články báze znalostí
    • Zájemci
    • Katalog produktů
    • Prodejní literatura
  • Změny v SDK směřující hlavně pro možnost tvorby výkonnějších dotazů a aplikací "nad" CRM (např. hromadné operace nad N záznamy)
Drobné změny najdeme i v systémové konfiguraci, zatržítka souvisejí se zpětnou kompatibilitou.

Zatím tady nevidíme další plánované novinky, jako je integrace se Skypem, mapami Bing a nové "flow" uživatelské rozhraní u některých entit (Příležitost, Zájemce, Případ).