Dynamics CRM 2013: vytvoření PDF z reportu a přiložení jako přílohy

Na MSDN webu se objevil postup formou javascriptu, jak automatizovaně vygenerovat přílohu PDF z reportu a uložit jí jako přílohu k nějaké entitě, to se samozřejmě může hodit například při generování objednávky nebo faktury z CRM a automatizovanému uložení výsledného PDF soboru k nově vytvořenému odchozímu mailu, tedy bez nutnosti krkolomného postupu: otevřít report, vygenerovat, uložit na plochu PDF, založit email, připojit přílohu….

[more]

Postup:

http://blogs.msdn.com/b/emeadcrmsupport/archive/2014/06/19/dynamics-crm-2013-custom-code-creating-a-report-as-a-pdf-attachment.aspx

 

Řešení však není všeho spásné, tím, že se jedná o javascript, nelze to automatizovat formou workflow, ale akci musí vyvolat uživatel z formuláře.

 

Já mám připravenou trošku lepší verzi Veselý obličej a to formou workflow aktivity, kterou je možné jednoduše přidat do jakéhokoliv workflow nad jakoukoliv entity, vybrat jaký report se má vygenerovat a kam ho připojit – je tedy možné akce automatizovat kompletně, například generovat automatické opakované faktury a zasílat je zákazníkům mailem ve formě PDF, brzo napíšu na blog příspěvek s ukázkou. Pokud by jste měli zájem, ozvěte se mi na email.

SharePoint: Unable to display this Web Part / System.StackOverflowException: Operation caused a stack overflow

Pokud SharePoint na nějakém webu zobrazuje místo obsahu webparty následující hlášku:

Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Microsoft SharePoint Foundation-compatible HTML editor such as Microsoft SharePoint Designer. If the problem persists, contact your Web server administrator

 [more]

a v ULS logu je výjimka:

Error while executing web part: System.StackOverflowException: Operation caused a stack overflow.
at Microsoft.Xslt.NativeMethod.CheckForSufficientStack()
at SyncToNavigator(XPathNavigator , XPathNavigator )
at (XmlQueryRuntime , IList`1 , Double , XPathNavigator )
at (XmlQueryRuntime , XPathNavigator )
at Root(XmlQueryRuntime )
at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer, Boolean closeWriter)
at System.Xml.Xsl.XmlILCommand.Execute(IXPathNavigable contextDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter results)
at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, XmlWriter results)
at Microsoft.SharePoint.WebPartPages.DataFormWebPart.ExecuteTransform(XslCompiledTransform xslCompiledTransform, XsltArgumentList xmlArguments, Boolean bDeferExecuteTransform)
at Microsoft.SharePoint.WebPartPages.DataFormWebPart.PrepareAndPerformTransform(Boolean bDeferExecuteTransform)

 

Zpracování XSLT trvalo déle než nakonfigurovaná maximální doba, defaultně je pouze 1 sekunda, což na SharePoint s velkým množstvím dat není mnoho Obličej s očima v sloup

PowerShellem je potřebu upravit timeout (počet sekund) maximální délky zpracování XSLT transformací:

$farm = Get-SPFarm
$farm.XsltTransformTimeOut = 5
$farm.Update()

 

a restartovat IIS příkazem IISRESET.EXE

SharePoint–řešení problémů s alerty (emailovou notifikací)

SharePoint má standardně zapnutý limit počtu alertů na jednoho uživatele, tedy kolik si jich maximálně může sám aktivovat – defaultně je toto číslo nastaveno na 500. Počet se sice zdá na jednu stranu rozumný a skoro uživatelsky nemožné, aby si někdo tolik upozornění aktivoval, ale v praxi je u některých agend málo. Příkladem mohou být například interní objednávky, kdy každá interní objednávka má definovaného řešitele pomocí kategorie (kategorii “IT” řeší IT oddělení, správu vozů administrativa, opravy strojů oddělení správy majetku, atd.), to ale znamená, že nechceme notifikovat všechny lidi, kteří mohou objednávky spravovat, tedy řešitele, ale jenom ty, kterých se daná kategorie objednávky týká – k tomu svádí vytvořit programově event receivery po vytvoření objednávky a pro dané uživatele vytvářet programově alerty na změnu položky… Ale tedy u je kámen úrazu, kdy i poměrně malá společnost je schopna vygenerovat více než 500 objednávek na jednoho uživatele, nehledě na to, že limit 500 alertů na uživatele je přes celou webovou aplikaci, kde může být více podobných agend. Vytváření alertů na jednotlivé položky tedy není z dlouhodobého pohledu dobrá cesta, ale pokud už takový nástroj/doplněk máte, nejjednodušší cestou je zvýšení limitu.

 [more]

Zvýšení limitu počtu alertů na uživatele nelze provést v UI, lze pouze příkazovou řádkou:

STSADM.EXE -o setproperty -url http://intranet.devit.cz -pn alerts-maximum -pv 10000

Pokud naopak chcete zjistit aktuálně nastavenou hodnotu, použijte:

STSADM.EXE -o getproperty -url http://intranet.devit.cz -pn alerts-maximum

 

Aktivované alerty jsou uložení v obsahové databázi, pro vypsání všech aktivních “okamžitých” notifikací lze použít SQL dotaz:

select * from [dbo].[ImmedSubscriptions] (nolock)

Případně přímo filtrovat na uživatele dle emailové adresy:

select * from [dbo].[ImmedSubscriptions] (nolock) where UserEmail = ‚novotny@devit.cz‘

SNAGHTMLf208ff

 

Analogicky lze dohledat i aktivní plánované alerty, tedy tzv. souhrnné denní nebo týdenní:

select * from [dbo].[SchedSubscriptions] (nolock)

Dynamics CRM–nová aktualizace přinese podporu SLA v servisním modulu

Pár novinek z připravované aktualizace Dynamics CRM – servisní modul:

  • Podpora SLA (Service Level Agreement) v servisním modulu a definice pravidel a priorit:
    image

[more]

image

  • Pole pro odpočítávání/počítání doby skutečně stráveného času servisního zásahu:
    image
  • Kontrola úrovně supportní smlouvy (zbývajícího počtu servisních hodin)
    image
  • Slučování duplicitních servisních případů:
    image
  • Samozřejmostí jsou statistiky pro sledování stavu ticketů, ale i doby řešení jednotlivých ticketů, doby od založení ticketu do jeho vyřešení, zdroje ticketů (Email, Web, Telefon, Twitter, Facebook)
    image

    image

  • Automatická eskalace pokud se například doba řešení blíží maximální době pro danou prioritu ticketu
    image

 

Video:

Více:

http://blogs.msdn.com/b/crm/archive/2014/06/04/3-ways-to-learn-what-s-new-with-customer-service-in-microsoft-dynamics-crm-spring-14.aspx