Gestern habe ich schon den ersten Teil meiner Notizen hier auf dem Blog veröffentlicht. Jetzt geht es weiter mit Teil 2.
Scrum
Microsoft hat den internen Prozess auf Scrum umgestellt und ich finde das merkt man wirklich. Es sind zwar nur zwei Tage Konferenz, aber das Produkt fühlt sich tatsächlich “fertig” an. Es ist interessant zu sehen wie eine so konservative Organisation wie NAV auf einen agilen Prozess umstellt. Ich bin gespannt was mit diesen ganzen Wasserfall-Tools wie SureStep und Co. passiert. Hier auf dieser Developer-Konferenz hat jedenfalls keiner davon geredet.
- 20 Scrum Teams mit zweiwöchigen Sprints
- Verwaltung der User Stories im TFS (Source Control irgendwo anders)
- ATDD wird eingesetzt aber kein TDD
- Umstellung auf Kanban steht jetzt bevor
OData
- OData Webservices aus NAV + Excel PowerPivot ist eine geniale Kombination für Auswertungen (Low Cost BI) – MSDN Walkthrough
- OData ist im Moment nur read-only
Dimensionen
- Völlig überarbeitet.
- Viel weniger Kopien der Dimensionen – nur noch über einen Schlüssel referenziert
Datenzugriff
- Neuer Data Access Stack angeblich schneller als Classic Client.
- FIND und FINDSET sind gleich schnell
- SETCURRENTKEY macht Abfragen jetzt nur noch langsamer (da Sortierung) keinesfalls schneller
- SQL Call Stack Traces – Blog post
- Es sind keine Writes in die Object und Company Tabellen mehr möglich
- Security Filters überarbeitet. Erlaubt es Nutzern nur gefilterte Datensätze zu zeigen.
- Neue Optionen um Probleme mit indirekten Rechten zu lösen
- Security Filter Feature kann im C/AL direkt an Record-Variablen konfiguriert werden
- Security-Einstellungen zeigen sofort Wirkung. Keine manuelle Synchronisation der Nutzer oder Neustarts nötig
- Standard App wurde noch nicht nach möglichen Security Filter Problemen durchforstet
- Validated Mode sollte möglichst nicht benutzt werden, da es langsamer als die anderen Optionen ist
Locks und Blocks
- Alle Slides und Samples sind auf Stryks Blog downloadbar
- SQL Server Lock Escalation sollte vermieden werden -> „always rowlock” benutzen (jedoch nicht auf 32bit und unter 8GB RAM)
- LOCKTABLE erhöht das Transaction Isolation Level auf Serializable
- Über einen DB switch kann auf Repeatable Read umgestellt werden (Unterschied wie Tag und Nacht)
- Das ist sowieso der Standard bei NAV2013
- Es können zwar Phantom Reads entstehen, aber das sind Probleme die in der Praxis nicht existieren (“habe ich noch nie gesehen”)
- Block und Dead Lock Detection Tool auf seinem Blog
- Job Queue von NAV2013 kann auch in älteren Versionen nachgebaut werden
- Beispiel 1: In Document Dimensions den Clustered SQL Index fixen – Document No., Document Type nach vorne -> weniger Blocks da die gelockten Zeilen näher beisammen sind
- Beispiel 2: In Codeunit 80 und 90 gibt es ein globales Lock auf die „GL Entry“. Das wird auch ausgeführt wenn gar keine Sachbuchungen passieren. Lock mit PostToGL Flag fixen (bereits in NAV2013 gefixt)
- Beispiel 3: In Tabelle 36 gibt es einen „Warehouse bug“ – Selbst wenn die Warehouse Tabelle leer ist wird die Tabelle gelockt. Generell sollte immer über ISEMPTY geprüft werden ob überhaupt Datensätze im Filter sind bevor man ein DELETEALL oder MODIFYALL durchführt
- Beispiel 4: Reservation Entry.Lock() hat ein ähnliches Problem. Einfach am Anfang der Funktion prüfen ob die Tabelle leer ist. Wenn ja dann mit EXIT aus der Funktion springen
- Beispiel 5: No. Series Line Tabelle ist „zu klein“ für das Lock und es werden mehr als eine Zeile gelockt. Folge: Wenn jemand eine Rechnung erzeugt kann ein anderer u.U. keine Artikel erzeugen. Lässt sich leicht mit Dummy Feldern fixen. 😉
Reporting
- Es gibt nur noch RDCL Reports
- Classic Sections (und deren Trigger) fallen weg
- Es gibt einen „Dataset designer“ als Ersatz für die Sections (analog Query designer)
- Es wird nun RDLC 2008, Report Viewer 2010 und Visual Studio 2010 benutzt.
- Reports erlauben „Save as Word“
- “Heavy reports” über Background Session auf dem Server drucken (“Server side printing”)
- Im Webclient gibt es “Preview” (nur IE) und „Save as PDF“ (alle Browser)
- „Tray selection“ fixed – zusätzlich ein Codeunit 1 Trigger der es erlaubt die Papierfachsteuerung zu überschreiben
- Upgrade Prozess
- Hotfixes in NAV 5 und 6 erlauben Trigger in Codeunit 1 „OnBeforeRunReport“ (erlaubt zu zählen wie oft der Report tatsächlich genutzt wird)
- Automatische Transformation hilft bei Upgrade von existieren NAV 2009 RDLC Reports (Tools/Upgrade Report)
- Upgrade braucht ein technisches Upgrade auf NAV2013 als Zwischenschritt, da der Report kompilierbar sein muss um das Transformations-Tool zu benutzen
- Automatisch vergebene Namen im Anschluss aufräumen
- Doppelte Spalten entfernen
- UI Guidelines auf MSDN befolgen
- CreateTotals entfernen
Insgesamt war es ein sehr gute Veranstaltung mit vielen Informationen zu Dynamics NAV 2013. Vielen Dank an die Organisatoren und die Speaker.