středa 26. května 2010

Microsoft Competencies

Od května platí pro nové požadavky pro dosažení kompetencí v Partner programu. To sice není zrovna oblast mého hlavního zájmu, nicméně vzhledem k mírné panice mezi některými partnery považuji za vhodné alespoň upozornit, že se něco takového děje.

Celý proces je v přechodné fázi a tak pro stejnou kompetenci třeba platí různé požadavky nyní a od října tohoto roku. Každá kompetence má svůj vyšší level, Advanced Competency, ale ty budou také dostupné až v říjnu.

Informace o požadavcích, benefitech, mapování současných kompetencí na nové atd. naleznete v dokumentu The Value of Earning a Microsoft Competency. Kompetence ERP začíná na straně 36, ISV na straně 51.

Pro Dynamics AX kompetenci se počítají lidé, kteří mají všech pět následujících certifikací (požadavky na verze jsou velmi mírné - počítá se i třeba AX 2.5, ale jen do října!):

  • Implementace a správa SQL Serveru
  • Instalace a konfigurace AX
  • Finance v AX
  • Vývoj AX
  • Obchod a logistika v AX

Takže mě čekají SQL Server a finance…

úterý 25. května 2010

DEV_SysTableBrowser a DEV_CreateNewProject

Vanya Kashperuk zveřejnil nové verze dvou svých nástrojů, nyní oficiálně podporujících AX2009. DEV_SysTableBrowser je extrémně užitečný nástroj, který rozšiřuje prohlížeč tabulek zejména o možnost řazení polí dle názvu (standardně jsou řazena dle ID) a možnost zvolit, jaká pole budou zobrazena. Pro popis dalších vlastnostím, download atd. viz článek na Axaptapedii. Původní DEV_SysTableBrowser bylo možné používat v AX2009 po několika drobných změnách (souvisejících s UtcDateTime), ale před hotfix rollupem 3 byla velkým problémem rychlost - a na tom se zřejmě nic nezměnilo, tudíž pozor na verzi vaší Axapty. DEV_CreateNewProject pomáhá vyvářet projekty - můžete si zadefinovat prefix projektů a snadno vytvářet větve v projektu odpovídající struktuře AOT (a to i v již existujícím projektu). Narozdíl od DEV_SysTableBrowser jsem ho nikdy moc nepoužíval, ale aktuálně pracuji na implementaci, kde mají AOT projekty (poněkud zvrhlý) devítipísmenný prefix, takže asi začnu. Stránka o DEV_CreateNewProject na Axaptapedii.

pátek 21. května 2010

Dojmy z Decision Spring 2010

Tentokrát jsem si na virtuální konferenci Decision Spring 2010 trochu času našel. Příliš jsem od toho neočekával… a přesto jsem byl celkem zklamán. Přednášky ani brožurky popisující partnerská řešeni mi mnoho nedaly a textový chat nemůže ani v nejmenším nahradit face-to-face rozhovory na "nevirtuálních" konferencích.

Kvalita doručovaného kódu

Upgrade projektu v UK jsem dokončil a jsem již zpět v ČR (sopka ani voda mě nezastavily), ale chci se o tomto projektu ještě zmínit. Konkrétně o dojmech z kódu, který dodali další partneři. Zákazník využívá dva moduly vytvořené třetími stranami, od výrobců jsme si tedy vyžádali "nové" (AX4 SP2) verze. První partner dokázal dodat zkompilovatelnou verzi až na třetí pokus (nějaké soubory chyběly, nějaké přebývaly…). I finálně dodaná verze obsahovala "užitečné" objekty jako Form1, CopyOf* apod. a také řadu objektů určených jen pro vývoj (např. EditorScripts). Aplikace se navíc jen hemžila povzbudivými poznámkami typu "tato funkce není hotova" a počet TODO dosáhl takového množství, že jsem musel vlastní TODO prefixovat, abych je byl vůbec schopen najít. Druhý partner dodal zkompilovatelný kód, dokonce i dokumentaci k instalaci, nicméně výtky ohledně objektů určených pro vývojáře a TODO platí i v tomto případě. V jejich řešení byl dále zakomentován kus standardního kódu (pravděpodobně z nějakých testovacích důvodů), což bránilo vytvoření některých číselných řad. Celé to na mě působí tak, že partneři mají jakási vývojová prostředí, na vyžádání z nich vyexportují (plus mínus všechny) objekty a odešlou zákazníkovi. Ani neověří, zda je možné z odesílaných souborů sestavit aplikaci. O nějakém řízení kvality ani nemluvím. Co si má pak zákazník myslet? A máme se my těšit na další spolupráci a doporučovat moduly těchto partnerů svým zákazníkům? Přitom by to nebylo tolik práce - nastavit kritéria pro publikovaný kód a kontrolovat (!) jejich splnění (typicky za použití Best Practice checku) a pokusně nainstalovat aplikaci z instalačních souborů. Dokud se nezmění zdrojové soubory, lze takto připravený instalační balíček rovnou použít pro další zákazníky. Oddělení business logiky a nástrojů pro vývoj se obvykle řeší oddělenými vrstvami. Pak je jen třeba dávat pozor, jaké objekty se exportují (nebo distribuovat rovnou .aod). Na tom, že ona první firma nemá připravé otestované verze svých modulů pro AX4, mě zaráží hlavně fakt, že AX4 SP2 byla vydána již před třemi lety…

pátek 14. května 2010

Decision Spring 2010

MSDynamicsWorld.com pořádá 19. a 20. května 2010 virtuální konferenci Decision Spring 2010. Registrace je zdarma (jen počítejte s trochou spamu v mailu ;-)), program naleznete zde. Loni jsem o této konferenci (pod jménem AxDecision) také psal, ale nakonec jsem se nezúčastnil, tudíž nemohu bohužel referovat. Letos bych to rád absolvoval, abych viděl, co zajímavého jiní partneři vymysleli…

čtvrtek 13. května 2010

Uvolnění zamčených souborů v aplikačním adresáři

V průběhu upgradu (AX3 → AX4) se mi dvakrát podařilo sestřelit AOS takovým způsobem, že zůstaly uzamčené soubory v aplikačním adresáři (umístěné na jiném stroji než AOS). Nebylo pak možné přepsat vrstvy, smazat aplikační index a podobně. Soubory lze uvolnit tak, že na daném serveru spustíte Administrative Tools > Computer Management a zvolíte System Tools > Shared Folders > Open Files. Ze seznamu otevřených souborů vyberete ty, které patří do příslušného aplikačního adresáře, a uzavřete je pomocí Close Open File (v kontextovém menu nebo v menu Action). Testováno na Windows Serveru 2003 SP2.

středa 12. května 2010

Synchronizace databáze v AX 4

Aktuálně dokončuji upgrade jedné implementace z AX3 na AX4 a odnesl jsem si z toho pár postřehů. První postřeh je staronový - postupně totiž zapomínám, co jak funguje ve starých verzích AX. Pokud selže synchronizace databáze v AX2009, objeví se formulář se seznamem problémů. V AX4 se obvykle dozvíte jen Cannot execute a data definition language command on (). The SQL database has issued an error. A nevíte ani, která tabulka to způsobila. Následující job umožní zjistit jména problémových tabulek. Bylo by možné modifikovat přímo dbSynchronize(), ale implementace nezávislého jobu je jednodušší.
Dictionary dict = new Dictionary();
TableId tableId;
;

setPrefix("Synchronizace DB");
tableId = dict.tableNext(0);

while (tableId)
{
    setPrefix(tableId2Name(tableId));
    try
    {
        appl.dbSynchronize(tableId, false);
    }
    catch {}
    tableId = dict.tableNext(tableId);
}

Tyto komplikace vidím to jako další argument, proč raději upgradovat přímo na AX2009…