1 / 61

Customization Manager 201

Customization Manager 201. Managing Customization Manager. About the Presenters. Tim Malia Partner T&T Data Solutions L.L.C. Tom Malia Partner T&T Data Solutions L.L.C. Take the lid off the “Black box” Understand where and how customizations are stored

fruma
Download Presentation

Customization Manager 201

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Customization Manager 201 Managing Customization Manager

  2. About the Presenters Tim Malia Partner T&T Data Solutions L.L.C. Tom Malia Partner T&T Data Solutions L.L.C.

  3. Take the lid off the “Black box” • Understand where and how customizations are stored • Understand how customizations are applied when a screen runs • Leverage the knowledge from 2 & 3 tobetter, more efficient and more quickly “manage” your customizations Objectives

  4. This material is intend for anyone that is responsible for or involved in maintaining Dynamic SL installations (i.e. they have to: keep it running, back it up, upgrade, troubleshoot, etc.) This material is NOT intended to teach you anything about how to write customizations. However, if you do also write customizations, you may find this information quite helpful. Target Audience

  5. Section: LEVELS

  6. Customization “levels” 1) Standard • “out of the box” (just the EXE) 2) Supplemental products • “3rd party” (You can run um, you can’t write um) 3) All Users • “Doesn’t matter what user ID” 4) Group • “user’s ONE customization group” 5) One user • “A specific user ID” 6) Self /save settings on exit

  7. Dynamics LS “out of the box” Why? When to be careful? Standard

  8. Q: If you can’t turn on standardmode, then how do you create these? A: Write an “All User” customization, export it, make a minor change to the header of the customizations, then reimport it….. You’ll see details a little later. Supplemental Products

  9. This one’s pretty much self explanatory…. All User

  10. Group Level Q: How many groups? A: “1” per user Q: How do you write one? A: Select Group ID

  11. Group Level (continued) Think about what you build on: A little warning:

  12. One User Level Q: What’s the difference between “One User” and “Self”? A1: Allows a user logged in as themselves to write customizations for another user that shouldn’t have rights to customization manager. A2: “One User” does NOT get mixed up with “Save Setting On Exit” but “Self” does.

  13. Self Level A little warning: “Save settings on exit” are indistinguishable from “Self”

  14. Section: Where & How are Customizations stored?

  15. Where are customizations stored? System database: • CustomVBA “standard” for current SL versions • Custom2 • “Pre-VBA” Basic Script Language (BSL) • Custom • OLD! – legacy from 16 bit product version.

  16. What identifies a customizations? • ScreenID The executable name • Sequence 500 = self 400 = One user 350 = Group 300 = All users 100 = Supplemental product • Entity ID Specific 3rd party, group or user

  17. How do customizations Load?

  18. A little simpler view of the query That gets the set of customizations to apply

  19. Get the actual customization code & property settings

  20. 1) Supplemental Products 2) All Users 3) Group (GOUPA) 4) One User (TOMMALIA) 5) Self/Save Settings on exit

  21. Customization Management • Why should you care about all this? • If you’re an end user…. You really shouldn’t care • If you’re responsible for managing, backing up, upgrading, trouble shooting a Dynamics SL install, then you may find times when this information is VERY nice to know • When do I care about this? • NOT – during day-to-day operations while things are working • WHEN: • Things AREN’T working • You’re upgrading a system • You’re managing a project to add new customizations to a system that already has customizations • Etc.

  22. Customization Management • Do I REALLY need to know all the back end stuff? Aren’t there features and utilities built into the product for all this? • Ideally you will never “need” to know the “back end stuff” • Yes there are “official” tools for managing customization data (We’ll be looking at those next) • Sometimes you may have to dig into the “back end stuff” • Other times, it will just be easier for you if you know the “back end stuff”

  23. Section: The OFFICIAL tools for managing customizations

  24. Official Tools/Utilities:Export Customizations (91.500.00)

  25. Understanding CST files:The header: • Supplemental products: • All User : • One User : • The header must be all on one line in the actual file. The “->” represents a “line continuation” for demonstration purposes and would NOT be present in an actual file. ' Begin Customization Screen: 0327000 Version: 5 Sequence: 100-> CompanyName: "Example Sup Prod"-> Description: "" -> System Administrator: FALSE Secure: 55 ' Begin Customization Screen: 0327000 Version: 5 Sequence: 300-> Description: "A New All Users Customization" System Administrator: FALSE Secure: 55 ' Begin Customization Screen: 0327000 Version: 5 Sequence: 400UserId: "TOMMALIA"-> Description: "A New One User Customization" System Administrator: FALSE Secure: 55

  26. Understanding CST files:Properties: • Changes to the properties of controls are exported in “Plain Text”. • Here is an example of a customization that simply changed the location of a button. Begin Button ButtonHistory '' Version = 6 height = 21 left = 278 '' parent = "_SSTab1_TabPage0" '' parentform = "Form1" top = 85 width = 97 End

  27. Understanding CST files:Code/VBA Project: • The “Macro Text” section contains a UU Encoded Copy of the VBA project which includes any macro code. ' Begin Macro Text *** VBA PROJECT BINARY DATA FOLLOWS. DO NOT MODIFY. *** Length: 400384 Compiled: 1 MT,\1X*&Q&N$ /@ # /[_"0 & ' M &P $ 'P H #^____ !P " ] &P! M "Q 0 @ ( # #_________________________________________ M____________________________________________________________ M____________________________________________________________ M____________________________________________________________ M *YY 0 ." H@F\ @( (P 3@ 'L ,0 P #@ 00 Y #$ M,P R "T -P X #@ . M #$ ,0!$ #$ +0 X #@ 1 P "T , P #8 , Y M #< ,P Q $( -@ Y #< ?0 M 3 $, ' End Customization

  28. Official Tools/Utilities:Import Customizations (91.510.00)

  29. Official Tools/Utilities:Import Options • Overwrite • Deletes current and replaces with new • Reject customization • If a cust. For a given Screen/level/entity in the import already exists, then the new customization will not be imported • Merge • “Tries” to combine existing customizations to a screen/level/entity with one being imported to the same screen/level/entity

  30. Section: Source Code Control & Documentations

  31. Customization documentationWhat should you document? • Why was the customization implemented • What does the customization “look like” • Export of current state of the customizations (CST file) • Plain text exports of all VBA code • Don’t forget DH files also • NOTE! There’s a great new feature in SP1 for this!!! YA! • SQL Data Definition Language (DDL) scripts to create any needed tables, views, procs, etc.

  32. Customization documentationHow do you export source code?

  33. Customization documentationWhere should you put your documentation?

  34. Something to take home: a script to make project directories select Distinct 'mkdir "' + ltrim(rtrim(CustomVBA.ScreenId)) + '-' + REPLACE(Screen.Name, ' ', '_') + '\' + case when CustomVBA.Sequence between 0 and 100 then 'SUPPROD\' + LTRIM(rtrim(CustomVBA.EntityId)) when CustomVBA.Sequence = 200 then 'LANG' when CustomVBA.Sequence = 250 then 'LOCAL' when CustomVBA.Sequence between 300 and 349 then 'ALLUSER' when CustomVBA.Sequence between 350 and 399 then 'GROUP\' + LTRIM(rtrim(CustomVBA.EntityId)) when CustomVBA.Sequence between 400 and 499 then 'ONEUSER\' + LTRIM(rtrim(CustomVBA.EntityId)) when CustomVBA.Sequence >= 500 then 'SELF\' + LTRIM(rtrim(CustomVBA.EntityId)) else CONVERT(varchar(4), CustomVBA.Sequence) end + '"' from customVBA left outer join Screen on CustomVBA.ScreenId = screen.Number mkdir "0101000-Journal_Transactions\SELF\TOMMALIA" mkdir "0327000-Vendor_Maintenance\ALLUSER" mkdir "0327000-Vendor_Maintenance\GROUP\GROUPA" mkdir "0327000-Vendor_Maintenance\ONEUSER\TOMMALIA" mkdir "0327000-Vendor_Maintenance\SELF\SYSADMIN" mkdir "0327000-Vendor_Maintenance\SELF\TOMMALIA" mkdir "0327000-Vendor_Maintenance\SUPPROD\Example Sup Prod" mkdir "0329000-Vendor_Class_Maintenance\SELF\SYSADMIN" mkdir "0826000-Customer_Maintenance\SELF\TOMMALIA" mkdir "TMTCE00-Timecard_Entry\ALLUSER"

  35. Section: Customizations During Upgrades

  36. Upgrade Management:Did you test ALL the customizations? • You ran the Dynamics SL upgrade, you upgraded the database and a couple users logged into screens without error…. You’re upgrade’s a success! • Turn the whole company loose on your shiny new Dynamics SL! • RIGHT?

  37. Upgrade Management:Keeping track of customization testing results • Most of you probably already do something like this… A simple spreadsheet to keep track of what needs t be upgraded, tested, etc….

  38. Upgrade Management:Keeping track of customization testing results • A slight variation on the same query we looked at for create the “create directory” statements earlier, and you can easily generate data that you can load into Excel to keep track of your customization upgrade.

  39. Upgrade Management:Something to take home

  40. Upgrade Management:to recompile or not to recompile. That might be the question: • Frequently customizations need no extra attention as a result of an upgrade…. But not always • VBA “caches” compiled customizations…. This can be a problem if the code “under” the cached customization has changed since it was compiled and cached… but you can force a recompile • Sometimes, it’s easier to just consistently “re-do” all customizations… but not necessarily from scratch

  41. Upgrade Management:to recompile or not to recompile. That might be the question: • VBA “caches” compiled customizations…. This can be a problem in the code “under” the cached customization has changed since the cache… but you can force a recompile • You can add an entry to the Solomon.ini file that will tell Dynamics SL that it should not rely on cached compiled code. [Customization] VBASourceSave=No VBASourceCompile=Yes

  42. Upgrade Management:to recompile or not to recompile. That might be the question: • Sometimes, it’s easier to just consistently “re-do” all customizations… but not necessarily from scratch • Sometimes it’s easiest to just bight the bullet and “redo” all customizations by importing modified CST files that have the macro section removed. • Then manually import or copy and past the VBA code back into the projects. • *Note: there’s a really good chance that with the ability to export vba code as plain text that comes with version 2011 SP1, this will no longer be necessary.

  43. Section: Where angles fear to tread… UNOFFICIAL managemenet tools

  44. Adv. Management:The UNofficial way Proceed at you own risk! What follows is not officially supported by Microsoft. T&T, Microsoft & SLUG are not responsible if you screw up your system doing this stuff! (But I’ve been doing it for years and so far so good)

  45. Adv. Management:Quick & Dirty Backups All customizations are stored in the Custom tables in the system database…. So.... Here’s a REALLY simple way to create a “quick & Dirty” backup of all or part of your customizations to a new table so you could “restore” them back later if you need to. See prior warning message! Select CustomId ,Description ,EntityId ,RecordIndex ,ScreenId ,Sequence ,Version ,PropData INTO MyCustomVBA_Backup From CustomVBA

  46. Adv. Management:Restore Q&D Backup Restoring a “Quick & Dirty” backup of your CustomVBA table is basically just the reverse of creating one. See prior warning message!

  47. Temporarily remove one or more customizations Once you know what uniquely identifies a customization and how they load, now it should be fairly obvious, how easy it could be temporarily “remove” a customization or a group of customizations: See prior warning message!

  48. Adv. Management:“One User” Templates Group customizations are a handy addition, but do have limitations (i.e. only one group per user). Sometimes it would be nice to be able to “copy” customizations written for one user to another user. (Note: the “official” way to do this is, export, change the header line, reimport) See prior warning message!

More Related