smart customizations microsoft dynamics tm ax 4.0 michael fruergaard pontoppidan partner...
TRANSCRIPT
Smart customizationsMicrosoft DynamicsTM AX 4.0
Michael Fruergaard PontoppidanPartner Productivity – Microsoft Dynamics AXTM Microsoft Corporation
SCREENCAST
Agenda
• Overlayering
• How to avoid overlayering
• Unit testing
• Code upgrade
OverlayeringApplications elements vary in size• Forms and reports are big
• Tables, menus, queries are medium
• Fields, field groups, methods, etc. are small
OverlayeringEmpty layers• An empty layer is transparent
• Elements from lower layer(s) are used
OverlayeringCustomizing• Customizing existing elements will
Copy of the existing element to your layer Hide existing elements
OverlayeringUpgrade conflicts
• During version upgrade conflicts occur when You have customized an element, AND Microsoft has changed the element
= cost = waste
Upgrading costs 30%
of original cost
OverlayeringLessons learned• Avoid overlayering when possible
• Prefer overlayering of small elements
• Prefer overlayering elements less likely to change
• Creating new elements is not ’overlayering’
Overlayering
Agenda
• Overlayering
• How to avoid overlayering
• Unit testing
• Code upgrade
Avoiding overlayering
• IntelliMorph Use field groups Use extended data types
• X++ Use class substitution
• Extended Data Types
• Fields
• Fields groups
• Locale
• Authorization
• Configuration
• Personalization
• Preferences
• Regional settings
IntelliMorph
• The User Interface in AX is build at runtime
• Forms
• Reports
• Web forms
• Web Reports
• Menus
<<Class>>
OriginalNew()Dialog()Run()static Main()static Construct
Class substitution
• Goal Make customizations to a class with as little overlayering as
possible
• Idea Ensure all instances of a class are replaced by a class of
your choice
<<Class>>
SubstituteNew()Run()static Construct()
• Steps1. Create a new class, inheriting from the class to
substitute
2. Change the original class’s Construct method
<<Class>>
OriginalNew()Dialog()Run()static Main()static Construct(usr)
Avoiding overlayering
Agenda
• Overlayering
• How to avoid overlayering
• Unit testing
• Code upgrade
Unit testIn a nutshell• Purpose: Detect regressions
• Test code exercising feature code
• Written by the developer
• Repeatable
Unit testMorphX integrated• Fully scalable architecture
• Recording of code coverage
• Fully automated Outputs to: XML, DB, TXT, etc.
• Supports repeatability
• Supports Test Driven Development
Unit testing
Agenda
• Overlayering
• How to avoid overlayering
• Unit testing
• Code upgrade
Detecting Upgrade Conflicts
Has Microsoft modified the
element ?
Are our changes
identical ?
Have you modified the element ?
Delete (obsolete)
Add to projectIgnore
No No
NoYes
Yes
Yes
OverlayeringUpgrade conflicts
• During version upgrade conflicts occur when You have customized an element, AND Microsoft has changed the element
Upgrading smart customizations
© 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.