Smart customizations Microsoft Dynamics TM AX 4.0 Michael Fruergaard Pontoppidan Partner...

Post on 18-Jan-2016

214 views 0 download

Tags:

Transcript of Smart customizations Microsoft Dynamics TM AX 4.0 Michael Fruergaard Pontoppidan Partner...

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.