July, 2008

  • Microsoft Dynamics NAV Team Blog

    How to deploy multiple NAS’es in ADCS

    • 0 Comments

    Although this is not related to the ‘core C/Side’, I would discuss about configuring ADCS with multiple NASes.

    The first question would by why somebody would like to do this? The answer is very simple. On a single VT100 NAS installation, whenever a handheld user is performing a time-consuming task, any other handheld user will have to wait for the task to complete, before getting a response in the screen. The reason is because the NAS can perform one task at a time, and while it is busy, it will queue any other incoming requests. Another good reason is because the VT100 will round-robin the available NASes making the up-time more reliable.

    The installation is simple, as long as you configure the system like this (TCP ports are examples):

    ADCS with multiple NASes

    For security reasons, it is recommended that the Access Point uses encryption (to the handhelds), and that this sub-network is private between the handhelds and the VT100.

    The NASes can be on the same machine or on different boxes, as long as you remember to set up the registry correctly where the VT100 service is installed. If the NASes are on different boxes, remember to generate an encryption key per box, and to copy the public key to the corresponding entry in the registry of the VT100 box. Of course the installation gets simplified if the NASes run on the same box, and even more if the VT100 and the NASes share the same hardware.

    Let’s make a step by step installation (assuming a NAV 5.00 or 5.00 SP1).

    1.       Install the Software (Database + NAS + VT100 + C/Side) as described in the manual.

    2.       Run C/Side using Windows Authentication. Remember to use the same credentials that the NAS will get (else the encryption key cannot be read by the NAS).

    3.       Generate the encryption key (one per machine – not per NAS).

    4.       Set each NAS to connect to the corresponding (same for all NASes) database, company, etc, using the same Windows login credentials as you logged in to generate the encryption keys.

    5.       Because of a VT100 limitation, each NAS will have to get a different TCP port number, even if they are located on different machines, so, the startupparameter should be “ADCS ADCSID=#”, where # refers to a different TCP port.

    6.       Now, the really tricky part comes from here. For each NAS that the VT100 will connect to (that is, on the machine where the VT100 service will run) you will need an entry in the registry, in order to connect the VT100 with the corresponding NAS. Each entry should be under “HKEY_LOCAL_MACHINE\SOFTWARE\Navision\ADCS\Application Servers”. The ADCS installation will create “ADCSNAS1”, and you can continue creating an entry per NAS on the same level (let’s say “ADCSNAS2, ADCSNAS3”, etc).

    7.       If the NAS is on a different machine than the VT100, you also need to set the ‘SocketServerName’ and portnumber, where the first one refers to the machine name (or IP address) of the host of the corresponding NAS, and the second one, the portnumber (i.e. 11322). Both of these keys are ‘String Value’.

    8.       For each NAS, you will need the ‘CryptBlockSize’, ‘Key Size’ and ‘Public Key’ (the ‘Private Key’ should not be copied), and this ‘Public Key’ should be copied from the machine where the NAS is hosted.

    a.       NOTE- The machine that hosts the VT100 will need one ‘ADCSNAS’ entry per NAS that it connects to, but the machine(s) that hosts several NASes will only need one ‘ADCSNAS’ that will share the same keys (generated by the C/Side client), but different ADCSID startupparameter.

    9.       Now you should start the NASes and the VT100 services on the corresponding machines. To test that everything works as it should, you should be able to stop any of the NASes on your system, and the screens should not halt (however, the response time might be slower). Also, when not all NASes are available, new sessions might not be successful, but any existing ones should be fine.

    With this configuration you benefit on the simultaneous response time for the handhelds, as different NASes will be able to process in parallel even when the NASes are hosted on the same machine. Also, as discussed before, this helps minimize down times, as even when a NAS stops or gets restarted, the VT100 will retry from the ‘pool of NASes’ when a TCP timeout occurs. Because of this, don’t set NASes on the registry that will not be deployed, as this will in fact slow down the system.

    Jorge Alberto Torres (jtorres)
    Software Developer Engineer

  • Microsoft Dynamics NAV Team Blog

    Things to remember with MSMQ Busadapter

    • 0 Comments

    Thank you to the person who made me aware that the article here:

    Comcom and the Bus adapter

     Misses out a couple of important things. So I will try to correct that here.

     

    When you set up NAS to read from Microsoft Message Queues (MSMQ), using the MSMQ Bus Adapter as described in the article above, then you must remember these two things:

    1)  The label on any message you send to the queue, must be "Navision MSMQ-BA". Otherwise NAS will ignore them, and they will stay in the queue. This is a way to control which messages are intented for NAS. It is a hardcoded feature, and cannot be adjusted or changed or disabled.

    2)  Text in the messages must be in the format UTF-8. NAS (or any other NAV component) does not recognise UNICODE and any other format than UTF-8 can make the message unreadable.

     

    So if everything else seems to be OK, but NAS still does not read messages from MSMQ, then check these two things.

     

    Lars Lohndorf-Larsen (Lohndorf )

    Microsoft Dynamics UK

  • Microsoft Dynamics NAV Team Blog

    Dynamics NAV 5.0 and Style Sheet issues, decimals exported as text

    • 0 Comments

    When using Send-to Excel option from NAV, decimals are exported as texts if Digit grouping symbol (Control Panel - Regional and Language Options) is a ' ' (whitespace). NAV uses ANSI 160 code character for space, which is not a space in ascii code table (normally used by windows applications). Consequently, decimals larger then 1000 (thus containing a space as digit grouping symbol) will be interpreted as text by excel.

    This has been corrected in a new style sheet released for this issue.

    The issue is also corrected in 5.0 SP1 update 1 (using style hseets provided with SP1).

    To correct this issue, open the style sheet file in notepad, default file is NavisionFormToExcel, placed in Stylesheet folder of the Client folder. Browse to the following line :  

      <xsl:variable name="DecimalSeparator" select="Object/DecimalSeparator"/>

    and add a line

      <xsl:variable name="DecimalSeparator" select="Object/DecimalSeparator"/>
      <xsl:variable name="nbsp">&#160;</xsl:variable>    <!--  LINE  ADDED  !-->

    Then locate and modify the following sections (modifications marked in code):

     <xsl:template match="Control[@type='TextBox']">
        <Cell xmlns="urn:schemas-microsoft-com:office:spreadsheet">
           <xsl:choose>
              <xsl:when test="contains(@value,'..')">
                <xsl:attribute name="ss:StyleID">TextBox</xsl:attribute>
              </xsl:when>
              <xsl:when test="@value = translate(@value,',.','')">
                <xsl:attribute name="ss:StyleID">TextBox</xsl:attribute>
              </xsl:when>

    <!-- BEGIN modifications, the following section was modified !-->

              <xsl:when test="string(number(translate(translate(@value,$nbsp,''),',.','11')))!='NaN'">  

                   <xsl:attribute name="ss:StyleID">TextBoxNumber</xsl:attribute>
              </xsl:when>                                                                                                           

    <!-- END modifications !-->        

              <xsl:otherwise>
                  <xsl:attribute name="ss:StyleID">TextBox</xsl:attribute>
              </xsl:otherwise>

           </xsl:choose>
                 <Data>
                      <xsl:choose>

      <!-- BEGIN modifications, the following section was modified !-->

                            <xsl:when test="string(number(translate(translate(@value,$nbsp,''),',.','11')))!='NaN'">
                                  <xsl:choose>
                                        <xsl:when test="contains(@value,'..')">
                                              <xsl:attribute name="ss:Type">String</xsl:attribute>
                                              <xsl:value-of select="@value"/>
                                        </xsl:when>

                                        <xsl:when test="translate(@value,$nbsp,'') = translate(translate(@value,$nbsp,''),',.','')">
                                              <xsl:attribute name="ss:Type">Number</xsl:attribute>
                                              <xsl:value-of select="translate(@value,$nbsp,'')"/>
                                        </xsl:when>

                                        <xsl:when test="$DecimalSeparator = '.'">
                                              <xsl:attribute name="ss:Type">Number</xsl:attribute>
                                              <xsl:value-of select="translate(translate(@value,$nbsp,''),',','')"/>
                                        </xsl:when>
                                        
                                        <xsl:when test="$DecimalSeparator = ','">
                                          
        <xsl:attribute name="ss:Type">Number</xsl:attribute>
                                              <xsl:value-of select="translate(translate(translate(@value,$nbsp,''),'.',''),',','.')"/>
                                        </xsl:when>

                                        <xsl:otherwise>
                                              <xsl:attribute name="ss:Type">Number</xsl:attribute>
                                              <xsl:value-of select="translate(translate(translate(@value,$nbsp,''),'.',''),',','.')"/>
                                        </xsl:otherwise>
                                   </xsl:choose>
                              </xsl:when>

                             <xsl:otherwise>
                                  <xsl:attribute name="ss:Type">String</xsl:attribute>
                                  <xsl:value-of select="@value"/>
                             </xsl:otherwise>
                       </xsl:choose>
                 </Data>

     <!-- END modifications !-->

     .....

     

    Jasminka Vukovic (jvukovic )

    Microsoft Dynamics NO


    Microsoft Customer Service and Support (CSS) EMEA

  • Microsoft Dynamics NAV Team Blog

    E-mail notification to hotfixes and updates

    • 0 Comments

    I am often asked how to keep track of product updates. Now, there is a new feature available on PartnerSource where you can subsribe to RSS feeds. This will give you an email notification every time a new NAV hotfix is released.

    A hotfix can be either a specific hotfix to a specific problem, or it can be an update. And it can be an application hotfix, or a platform hotfix. Basically apart from Service Packs or new versions, any other NAV release will be released as a hotfix. So subscribing to this will hopefully help keeping track of what gets released for NAV.

    To subsribe, follow this link (PartnerSource login required):

    Microsoft Dynamics PartnerSource RSS Feeds

    Then select "Most Recent KB Articles" under the "Microsoft Dynamics NAV Feeds"-section (or any otherRSS feed you want to subscribe to), and then click "Subscribe to this feed".

    I can also recommend this page which lists all hotfixes for NAV, and is being kept updated regularly:

    Knowledge Base Articles added for Microsoft Dynamics NAV

    I hope this is will help making PartnerSource a much more useful place for product information!

    Comments and further suggestions to what kind of information would be useful to you, are welcome.

     

    Lars Lohndorf-Larsen (Lohndorf )

    Microsoft Dynamics UK

  • Microsoft Dynamics NAV Team Blog

    NAV 2009 - Simple way to view a page

    • 0 Comments

    This is probably the tip which has saved me the most amount of time recently. When you just want to run a page in the new client, then you don't have to modify other pages to include it, or to make links to this page. Just click Start -> Run, and run this:

    DynamicsNAV:////runpage?page=90055

    In this case, it will open page 90055

    This post is based on the Technical Preview version available here (PartnerSource-login required). Obviously, anything might change before the final release. For more information, see this MSDN topic, Creating and Running Hyperlinks.

     

    Lars Lohndorf-Larsen (Lohndorf )

    Microsoft Dynamics UK

  • Microsoft Dynamics NAV Team Blog

    Overview of platform updates for NAV 5

    • 0 Comments

    For a table of platform updates and hotfix history for NAV version 5 with build numbers, update numbers and file contents, follow this link:

    Overview of platform updates for NAV 5

    This previous post contains the same information for NAV 4 SP3:

    Overview of platform updates for NAV 4 SP3

     

    Lars Lohndorf-Larsen (Lohndorf)
    Microsoft Dynamics UK
    Microsoft Customer Service and Support (CSS) EMEA

Page 1 of 1 (6 items)