A new release of the Application Test Toolset for Microsoft Dynamics NAV 2009 SP1 is available on PartnerSource. This toolset builds on top of the testability features that were released with Microsoft Dynamics NAV 2009 SP1. These features add test capabilities to the development environment, the C/AL language, and the runtime platform. They enable the adoption of a test-driven development style and the development of automated test suites that execute fast and reliably.
The main theme of this new release is the addition of a significant body of C/AL tests. Overall, it includes:
Keep an eye on this blog for more posts on testing NAV solutions in the coming weeks.
Bas Graaf
Check out the new videos on MSDN. http://msdn.microsoft.com/bb629407.aspx. These videos target the developer audience for Microsoft Dynamics NAV 2009 SP1. The current offerings include:
More videos are in the works and will target both the platform and the application, so check back often to see what's been added. All videos are in English.
There have been many requests for some weeks if it is possible to synchronize contacts of Company type and contacts of Person type in Dynamics NAV to one single folder in Outlook. The answer is: Yes, this is possible. The question is: How should we do this? This blog posting will describe how this can be done. It is not difficult, but some steps needs to be done very careful. First of all, ensure the Outlook Synch User Setup form is empty. To do so, follow steps below:
Second, I would reset all demo entities to default values. To do so, follow steps below:
Now it is time to create a new entity. To do so, follow steps below:
Another step that needs to be done is to create the correct dependencies for the TASK entity. To do so, follow steps below:
The following will be shown:
Similar steps that need to be done are to create the correct dependencies for the APP entity. To do so, follow steps below:
Now, it is time to delete the original demo entities. To do so, follow steps below:
The entity list now looks like this:
Last but not least, the Outlook Synch. User Setup form will have to be filled in with correct date.
The following could be setup in Dynamics NAV:
The following could be setup in Microsoft Outlook:
Regards,
Marco MelsCSS EMEA
This posting is provided "AS IS" with no warranties, and confers no rights
[Updated with a fifth book!]
This month the fourth fifth English-language book on Microsoft Dynamics NAV 2009 is being released. For those of us working on Dynamics NAV, it is exciting to see that partners are so invested in our product that they eagerly spend months writing a book to help other partners be more productive when creating Dynamics NAV solutions. The latest book is Microsoft Dynamics NAV 2009 Application Design by Mark Brummel, whom I recently met at Directions EMEA.
Here's the list of all four five books:
If you want to increase your skills on developing a Microsoft Dynamics NAV solution—particularly if you want to better understand how to create a RoleTailored solution—I recommend that you get your hands on one, or even all four five, of these books.
— Paul Chapman
To limit the synchronized data and for simplicity reasons, we usually recommend to create conditions like the following:
mmels APP WHERE(Salesperson Code=CONST(MME)) 1mmels CONT_COMP WHERE(Salesperson Code=CONST(MME))mmels CONT_PERS WHERE(Salesperson Code=CONST(MME))mmels CONT_SP WHERE(Salesperson Code=CONST(MME))mmels TASK WHERE(Salesperson Code=CONST(MME)) 1Only contacts that have an assigned salesperson (MME in this example), will be synchronized. This is a good way to limit the data. For the contact entities, other suggestions are also possible. E.g.:
mmels APP WHERE(Salesperson Code=CONST(MME)) 1mmels CONT_COMP WHERE(Country/Region Code=CONST(EMEA))mmels CONT_PERS WHERE(Country/Region Code=CONST(EMEA))mmels CONT_SP WHERE(Salesperson Code=CONST(MME))mmels TASK WHERE(Salesperson Code=CONST(MME)) 1
In this example above, only company and person contacts in EMEA will be synchronized. It would be nice to have the other regions synched as well, wouldn't it? In the Outlook Synch. Entities, we can easily create new entities and have them reset to default values. In the example below, company contacts in Latin America needs to be synched as well. You can of course do the same for any other region, company and/or person, etc. 1. select Administration, Microsoft Office Outlook Integration, Outlook Synch. Entities2. select Code and press F33. in the Code field type in CONT_LATAM4. press button Synch. Entity5. select Reset to Defaults, select "Microsoft Dynamics NAV Contacts of the Company type", press OK6. press button Synch. Entity, select Register in Change Log SetupNow for the Outlook Synch User, add the newly created entity and create a condition for Latin America, etc. The result would be like this:mmels APP WHERE(Salesperson Code=CONST(MME)) 1mmels CONT_COMP WHERE(Country/Region Code=CONST(EMEA))mmels CONT_PERS WHERE(Country/Region Code=CONST(EMEA))mmels CONT_SP WHERE(Salesperson Code=CONST(MME))mmels CONT_LATAM WHERE(Country/Region Code=CONST(LATAM))mmels TASK WHERE(Salesperson Code=CONST(MME)) 1
In this example, company and person contacts in EMEA will be synchronized but also company contacts in Latin America. Remember that per entity a folder in Outlook should be created and assigned via the Outlook Addin. In a later posting, I will describe how to create one entity that will synch company and person contacts to one folder. That is a really a nice to have.
When working with TASK and APP, the conditions given in the example above are mandatory. A task in Outlook must contain an owner and an appointment in Outlook must contain an organizer.
For the CONT_SP entity there is some flexibility. In the above example, only one salesperson would be synchronized for the Outlook Synch User called mmels.Let's assume a ToDo must be created in Dynamics NAV for a given contact and the required attendees are two salespersons / Outlook Synch Users. The manual tells us that when working with tasks and appointments in an Exchange Server environment, the E-mail field must be populated from the Exchange Address Book. Also see earlier blog and the relevant whitepaper:http://blogs.msdn.com/b/nav/archive/2008/11/04/tip-1-the-related-item-for-the-synchronized-outlook-item-is-not-found-in-the-specified-folders-the-following-values-were-expected.aspx After first full synchronization, the existing salespersons can be populated with an E-mail address and then synchronized back to Dynamics NAV via a normal synchronization.
To avoid the situation that in this scenario only one salesperson is synchronized correctly and populated with the required E-mail field, we now recommend to remove the condition from the CONT_SP entity, The example above would now look like this:
mmels APP WHERE(Salesperson Code=CONST(MME)) 1mmels CONT_COMP WHERE(Salesperson Code=CONST(MME))mmels CONT_PERS WHERE(Salesperson Code=CONST(MME))mmels CONT_SP mmels TASK WHERE(Salesperson Code=CONST(MME)) 1
Today, I would like to tell you how the User Experience team for Microsoft Dynamics NAV does research to validate that our products are indeed Useful, Usable, and Desirable.
My name is Arne de Booij and I am a so-called User Experience Researcher working with the Microsoft Dynamics NAV team. That means that I need to understand on a personal level what your relationship to our product is. I support various development teams by answering their user related questions through performing all kinds of research activities with current and future users. Questions I get asked a lot are, for example:
There are various ways to answer these questions, depending on, for example, whether we are getting ready to make software and therefore are looking at an early sketch of the user interface or whether we are out at a customer site where our product has been installed and have direct access to the users that this particular user interface has been designed for. The answers that we get from this research will help make our product better for our users by answering their needs and helping them work more efficiently.
Recently, we completed a quite extensive research project to answer some questions about the RoleTailored Client (RTC) that we shipped with Microsoft Dynamics NAV 2009. This new client enables our users to “tailor” the software to their own unique needs in their own unique role. Delivering the product was the result of a very long design and development process and we wanted to know how our users are using this new client so that we can assess what adjustments, if any, we should make as we continue down the path of RoleTailored applications. We wanted to know things like:
During late 2009 and early 2010, we conducted research with the help of companies that were using the Microsoft Dynamics NAV 2009 RTC product to run their businesses. We visited each company for an entire day. During the visits, we started with a 1- 1½ hour interview with a company representative, usually someone from the IT department, to get more information about the company and their setup of Microsoft Dynamics NAV 2009. After that, we sat down at the desks of the people who actually use the RTC for their daily work. We asked them to show us how they performed their most important day-to-day tasks. During this time, we took photographs, asked follow up questions and of course, took a lot of notes. For each task they showed us, we also asked a few questions to help us measure the satisfaction they had performing that task in the RTC. After the visit, we continued to gather information by sending participants a link to a post-visit survey used to measure the level of productivity a participant experienced with the RTC. Let’s look at the results.
In total, 53 participants, working for 16 different companies, participated in this research project. The companies were located in the United States, Canada, the United Kingdom and Germany. The companies where the participants worked were active in, for example, the Software industry, Wholesale and Manufacturing (19%), Distribution and Professional Services (13%), Charity, Retail and as a Dynamics Partner (6%).
62% of participants had not used a previous version of Microsoft Dynamics NAV before they started using Microsoft Dynamics NAV 2009. 38% had used a previous version of Microsoft Dynamics NAV before.
Most participants (42%) were working in the Finance department of their company. Other main departments were Warehouse (13%), Customer Service (9%), Purchasing (8%), IT (8%), Sales (6%) and Operations (6%). Participants had used Dynamics NAV 2009 for an average of 5.4 months (range 1-24 months) and were using Dynamics NAV 2009 for an average of 5.7 hours per day (with a range spanning 2 – 8 hours).
Like any good research study, we learned a lot!
The results told us that there a lot of good things our users are experiencing when they use the RoleTailored client. For example, people on the product reported high satisfaction and productivity while performing the tasks that are most important to them.
But the results also shed a light on some things we need to improve. For example, there are still some tasks that require too many clicks or areas where finding the right information is still not immediately clear.
But the biggest takeaway for us, by far, was that a lot of companies and their users were not taking full advantage of the many ways they can configure and personalize their own experience. For example, for things that our users do every day—like accessing a customer record or taking an order—we have enabled them to add those actions directly to the Action Pane. Because our users weren’t doing that, they have to perform unnecessary actions every time they needed that functionality, which decreases their level of productivity. Same holds true for not having all of the lists a user needs ready and loaded into their navigation pane--a very simple personalization to do. That means that users are forced to go to Departments to find that information.
So what did we learn? We’ve still got work to do. Job security--they call it. Seriously though, there could be a lot of reasons that some users are not taking full advantage of the features in the product that allow them to tailor the solution to their specific needs, so we are continuing to investigate this.
Which brings me to you… if you are reading this and have seen something similar in your company, please help us help you! Feel free to leave a comment with your thoughts on why this is the case and what we can do to help you get the most from your user experience.
To learn more about RoleTailoring, try out these links:
- Thinking RoleTailored Presentation at Microsoft Convergence 2010
- Microsoft Dynamics is familiar to your people
If you are testing out NAV Web services and find that you cannot make any calls beyond your initial and then find that the NST is no longer running, please try the following:
Compile the following:
Type
ID
Name
CU
6810
EP Request Handler
8700
Mobile Document Dispatcher
99008528
BizTalk Appln. Srv. Startup
The error commonly occurs because one or more of these three codeunits do not have an entry in table 2000000071 - Object Metadata. They are all called in codeunit 1 on CompanyClose(). This then means that the call itself will run fine, but the closing of the connection will cause the failure and the NST to crash.
Lars ThomsenSupport EngineerMicrosoft Support
For those that have not used this before, the Style Sheet Tool is a free code sample used as an addition to standard Dynamics NAV application, for enhancing send-to Word functionality on Dynamics NAV by allowing simple and user-friendly style sheet customization. After lots of feedback form partners, I have added an extra dimension to this tool: the ability to export several tables with multiple records. Up to now, any number of tables was allowed provided they all show one record each, in addition to one table showing multiple records.
This ’constraint’ is now removed, or rather, the design is adjusted to allow several tables showing multiple records each, to be included in merge document design.
To align the tool with this extension, the following code needs to be replaced:
Codeunit 680 : Style Sheet Management
Global variables: add following two variables to the list of global variables of this codeunit
Name DataType
NoOfMultiLineTables Integer
MLCounter Integer
ManageMultiLineChanges trigger (this code change applies to all versions of the tool)
Old Code:
...
RemoveEndOfMultiLine(NodeTextValue);
EXIT(Return);
New Code:
// EXIT(Return); //changed line
CreateMultilLineSection trigger (the code marked as old code here differs a bit in different versions of the tool. The essence of the change is still the same, MLCounter is to be 'started' at the beginning of this trigger)
// Create section for Multi-Lines
ChildNode := IOChildNode.parentNode;
// Counter for multiple multiline sections //added line
MLCounter +=1; //added line
CreateMultiLineBody trigger
Local variables: the following local variable is added to the trigger
DataType
MultilineEnd
Boolean
(the code marked as old code below differs a bit in different versions of the tool, and this line is called in several triggers in some versions of the tool. The essence of the change is though the same:
EACH references to multiline-section-properties (contained within this line: LoadAttributes(1,'name','multiline-section-properties');)
should be replaced with LoadAttributes(1,'name','multiline-section-properties'+FORMAT(MLCounter)) as that creates unique references to different multi-line sections by adding a counter to the end of each, where there previously was only ONE, called multiline-section-properties
The example below is from version 1.1
ParentNode := ChildNode.parentNode;
LoadAttributes(1,'name','multiline-section-properties');
AddElement(ParentNode,NewChildNode,Text043,1);
// Add counter to multiline section name, for unique reference // added line
LoadAttributes(1,'name','multiline-section-properties'+FORMAT(MLCounter)); //changed line
The following code change applies to all versions fo the tool:
ChildNodeList := ParentNode.childNodes;
FOR NodeCount := 1 TO ChildNodeList.length DO BEGIN
ChildNode := ChildNodeList.item(NodeCount - 1);
TempNodeName := ChildNode.nodeName;
IF TempNodeName = Text043 THEN
MultiLineNodeCount[1] := NodeCount;
TempNodeValue := GetTextNodeValue(ChildNode);
IF TempNodeValue <> '' THEN
MultiLineNodeCount[2] := NodeCount - 1;
END;
// If MULTILINE_END is not found then set end to number of nodes.
IF MultiLineNodeCount[2] = 0 THEN
MultiLineNodeCount[2] := NodeCount;
NodeCount := 1; //added line
WHILE (NodeCount <= ChildNodeList.length) AND
(NOT MultilineEnd) DO BEGIN //changed line
// exit the loop when next multiline end is found //added line
IF TempNodeName = Text043 THEN BEGIN //changed line
IF TempNodeValue <> '' THEN BEGIN //changed line
IF STRPOS(TempNodeValue,Text021) <> 0 THEN
MultilineEnd := TRUE; //added line
END; //added line
NodeCount +=1; //added line
IF NodeCount <= ChildNodeList.length THEN
NodeCount := NodeCount -1; //added line
MultilineEnd := FALSE; //added line
RemoveEndOfMultiline Trigger
// Remove end node of Multi-Lines
ChildNodeList := XMLDoc.getElementsByTagName('w:r');
IF STRPOS(GetTextNodeValue(ChildNode),Text021) <> 0 THEN BEGIN
ParentNode.removeChild(ChildNode);
EXIT;
Add the following parameter to this trigger:
Name DataType Length
NodeTextValue Text 250
// nodetextvalue = multiline_begin_tablename
NodeTextValue := COPYSTR(NodeTextValue,17,MAXSTRLEN(NodeTextValue)); //added line
//Check if this is the right MULTILINE_END to remove // added line
IF STRPOS(GetTextNodeValue(ChildNode),Text021+'_'+NodeTextValue) <>0 THEN //added line
// EXIT; // remove all ends //changed line
Replace all occurences of the call to this trigger in the code:
RemoveEndOfMultiline;
with
RemoveEndOfMultiline(NodeTextValue);
The extended codeunit 680 object is also attached.
Note: Code changes described apply to all versions of the tool, the codeunit attached applies to version 1.1
You can direct your questions or feedback to jthunes@microsoft.com
There are two ways to create meetings in Outlook:1. directly from the Calendar folder2. directly from the Contact, right click on the contact, press Create and then select Meeting
The latter would open a new form where you can enter the required data, etc. Not a big deal but after synchronization from Outlook to Dynamics NAV, the Outlook Addin gives an error:
This attendee already exists
When creating a meeting by right clicking a contact, a link is added to a meeting for that contact. In order to see the linked contacts, go to Tools, Options, Contact Options, Show Linking on all forms. It is then visible at the bottom of a meeting form.
Linked contacts are synchronized as to-do antendees (tab5199) with a flag attendance type (field 3) set to false. While normal contacts have this flag set to true. If there is the same contact present as a meeting attendee in Outlook and as a linked contact, the error occurs when synching, "This attendee already exists".
It is not supported to have multiple attendees with the same email in outlook, added as recipients or as links since this prevents a correct synchronization to Dynamisc NAV. As a workaround, Links should be removed from the APP entity, alternatively a duplicate attendee or a link should be removed from a meeting in Oultook before synchronizing the meeting.
To remove the Links from the APP entity, the following needs to be done:- go to Administration, Application Setup, Microsoft Office Outlook Integration, Outlook Synch. User Setup- select the APP entity, select No. of Elements and press F6- select Links and press F4, Yes to delete the Links Outlook Collection from the APP entity in the Outlook Synch. Entity APP - Outlook Synch. Setup Details form
Marco MelsCSS EMEA This posting is provided "AS IS" with no warranties, and confers no rights
When working with tasks and appointments, the following error could show up:
The related item for the synchronized Outlook item is not found in the specified folders. The following values were expected:.
It took us a while to find out why this error occurred. Let me first describe how this can be reproduced:
First of all, create two contacts in the Contacts table in Dynamics NAV and use the following data:
First Contact:John Doe Downingstreet 101234 XX NLjohndoe@dummy.nlSecond Contact:John DoeJohningstreet 125678 XX NLdoejohn@123.nl
- then install Demo installation of Dynamics NAV 2009 SP1 using domain user account called DOMAIN\Administrator- install NAS of Dynamics NAV 2009 Sp1 and populate it with the correct values- go to Administration / Application Setup / General / Change Log Setup- enable Change Log Activated- go to Sales & Marketing / Sales / Salespeople- press F3 and use the following data to create a salesperson
MMEMarco Mels
- go to Administration / Microsoft Office Outlook Integration / Outlook Synch. User Setup- add the following to the Outlook Synch. User Setup window (Bidirectional):
mmels CONT_SP mmels CONT_COMP WHERE(Salesperson Code=CONST(MME))mmels CONT_PERS WHERE(Salesperson Code=CONST(MME))mmels TASK WHERE(Salesperson Code=CONST(MME)) 1mmels APP WHERE(Salesperson Code=CONST(MME)) 1
- press Setup, select Register in Change Log Setup for CONT_SP, CONT_COMP, CONT_PERS, TASK and APP- start up Outlook and configure the Outlook profile with the correct settings for Mailbox enabled user account called Marco Mels- configure the Outlook Addin with the following folders:
CONT_SP: Mailbox - Marco Mels\Contacts\SalespeopleCONT_COMP: Mailbox - Marco Mels\Contacts\Company ContactsCONT_PERS: Mailbox - Marco Mels\Contacts\Person ContactsTASK: Mailbox - Marco Mels\TaskAPP: Mailbox - Marco Mels\Calendar
- perform a Full Synchronization- go to the synchronized contact Marco Mels and populate it with an E-mail address- perform a normal Synchronization- go to Sales & Marketing / Sales / Salespeople - create a ToDo of Meeting type for salesperson Marco Mels- add a Contact attendee called John Doe (johndoe@dummy.nl) and finish the meeting creation- go to Sales & Marketing / Sales / Salespeople - create a ToDo of Meeting type for salesperson Marco Mels- add a Contact attendee called John Doe (doejohn@123,nl) and finish the meeting creation- synchronize the ToDo's
Result:The ToDo is created as a meeting in OutlookThe Outlook Addin contains a red light showing an error for the created meeting:
The Scheduling tab of the synchronized meeting contains one underlined entry:Marco Mels: underlinedJohn Doe: not underlined
- press CTRL+K and select the correct John Doe and press OK- synchronize the meeting requests, etc.
Result:The ToDo is created as a meeting in Outlook. The Outlook Addin now does not contain a red light showing an error for the created meeting:
In the beginning of the analysis we thought that this behavior was only seen if you had contacts with the same name, but with different email addresses. Then it would be natural Outlook behavior and the error message would just indicate that the user should verify the meeting and ensure the right contacts. The proposed solution to prevent the error message when it is not needed. The suggested fix now also ensures the the email address is being used in the attendee field. Combining the two fields name and email address would ensure that Outlook has enough information to actually resolve who is the contact.
A hot fix exists for this issue and is described in KB article:983614 The related item for the synchronized Outlook item is not found in the specified folders. The following values were expected:.https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;983614 Marco MelsCSS EMEA This posting is provided "AS IS" with no warranties, and confers no rights
A hot fix exists for this issue and is described in KB article:983614 The related item for the synchronized Outlook item is not found in the specified folders. The following values were expected:.https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;983614
Sometimes the Outlook Addin, especially after a reinstall, becomes inactive or the Outlook Addin does not show up at all. The reason behind this is that the two below mentioned files have different build releases which causes the assemblies not to be loaded. After enabling the debug log file, the following error log can be seen:
Error: 23.04.2009 11:51:47 [1] Dump of exception type 'System.IO.FileLoadException'Message: Could not load file or assembly 'Microsoft.Dynamics.NAV.OLSync.NAVSyncAddIn.resources, Version=5.0.26084.0, Culture=nb-NO, PublicKeyToken=4d69abd5d321bc2b' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)Stack trace: at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)at System.Reflection.Assembly.InternalGetSatelliteAssembly(CultureInfo culture, Version version, Boolean throwOnFileNotFound)at System.Resources.ResourceManager.GetSatelliteAssembly(CultureInfo lookForCulture)at Microsoft.Office.Core.CommandBarsClass.get_Item(Object Index)at Microsoft.Dynamics.NAV.OLSync.NAVSyncAddIn.Connect.OnStartupComplete(Array& custom)Inner exception: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Dynamics.NAV.OLSync.NAVSyncAddIn.resources, Version=5.0.26084.0, Culture=nb-NO, PublicKeyToken=4d69abd5d321bc2b' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)File name: 'Microsoft.Dynamics.NAV.OLSync.NAVSyncAddIn.resources, Version=5.0.26084.0, Culture=nb-NO, PublicKeyToken=4d69abd5d321bc2b'The following two files have different build releases:- Microsoft.Dynamics.NAV.OLSync.NAVSyncAddIn.resources.dll 5.0.25791.0- Microsoft.Dynamics.NAV.OLSync.NAVSyncAddIn .dll 5.0.26084.0 A hot fix exists for this issue and is described in KB article:974581 The Microsoft Dynamics NAV Sync Add-in is not displayed or unavailable in Outlook and an error message is logged in the debug log: "Could not load file or assembly"https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;974581 Marco MelsCSS EMEA This posting is provided "AS IS" with no warranties, and confers no rights
A hot fix exists for this issue and is described in KB article:974581 The Microsoft Dynamics NAV Sync Add-in is not displayed or unavailable in Outlook and an error message is logged in the debug log: "Could not load file or assembly"https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;974581