watching

Hi, Suppose I have 10 licences connection to my Navision server. Some user’s runs Navision client, but they are not working. How I can detarminate that they are in idle and how automation disconnect then from server ? Thanks Augis

Hi! If you run NAVISION on the SQL-Database you could use the tool “Session Killer”, available in the Download-Section of NOLUG … Regards, Jörg Joerg A. Stryk Apollo-Optik, IT/ERP

No :frowning:

quote:


Originally posted by stryk: Hi! If you run NAVISION on the SQL-Database you could use the tool “Session Killer”, available in the Download-Section of NOLUG … Regards, Jörg Joerg A. Stryk Apollo-Optik, IT/ERP


Hmmm … so there could be - maybe - this “workaround”: 1. Check and save the “Read Cycles” (Table “Session”) of a user periodically, e.g. in OnTimer of Form “Main Menu” (e.g. new field in Table 91, “Last Read Cycles”) 2. So, if you decide, that a user is idle (e.g. no changes in “read cycles” within period User.“Last Read Cycles” = Session.“Read Cycles”, then you could start a external program SHELL([,]) that kills the NAVISION Client-Program e.g. SHELL(killtask, fin.exe); … … that depends on your Operating System! For NT, there should be tools available in the WorldWideWeb (someone told me), for other OS I don’t know. Well, I’ve never tested this, but maybe that helps you. Best Regards, Jörg Joerg A. Stryk Apollo-Optik, IT/ERP Edited by - stryk on 2002 Jun 19 16:45:53

Hi, We are using ExpandIT client manager. It works fine. We save about 20 user licenses. We have license for 90 users and it was not enough. After setup client manager with 5 min idle time we have 70-75 users active all time. Valentin Gvozdev Andel Jewelry Inc.

Just found a Freeware-Tool that kills tasks from command-line, Win9x/2000/NT/XP: TaskTerminator from ZeaSoft http://www.ZeaSoft.com Killed NAVISION with

SHELL('c:\taskt.exe', STRSUBSTNO('%1', COMPANYNAME));

The problem is, that taskt.exe has to be copied to every possible NAVISION-Client-PC or has to be run on a shared network-folder … don’t know what “damage” such a “hard shutdown” could cause … maybe ZUP is wrecked … Joerg A. Stryk Apollo-Optik, IT/ERP

Hi, we use a freeware app that is available at the Unofficial Navision® support web site (http://www.navsupport.com/). The disadvantage is that you also have to install it on every client, but the app is really small. We run it with Win98 without any problem. No problem with the zup file. Saludos Nils

some month ago we had the problem, that the network crashed while i was saving a report. While nothing happened for a longer time i rebootet my PC. After that my session in navision was still open, although i wasn’t connencted to the database. Unfortunately there was no possibility to kill my session (we’re still using version DE2.50). The last step was that we rebooted the complete navision-server. I posted that problem here in the forum, but there was only a solution for the SQL-version. Is any of the described tools capable of killing a session in non-SQL-versions ? Stefan Weinreich Billing Analyst

Stefan, killing/removing a dead session is different than removing sessions of inactive users. However, it is NOT a Navision issue. Running on NT or W2K you can adjust the KeepAlive time. Please see the following document issued by Navision HQ: How to change KeepAliveTime in WIN NT The KeepAliveTime is an adjustable parameter where you can decide how often NAVISION and NAVISION Financials will check for a “dead” client. The NAVISION server and NAVISION Financials server uses the TCP/IP keep alive packet, to find out If a client beaks down, or the user shuts it off. The following is a copy from a Microsoft forum. (Look for KeepAliveTime) PSS ID Number: Q120642 Article last modified on 08-22-1995 3.50 3.51 WINDOWS ---------------------------------------------------------------------- The information in this article applies to: - Microsoft Windows NT Workstation versions 3.5 and 3.51 - Microsoft Windows NT Server versions 3.5 and 3.51 ---------------------------------------------------------------------- SUMMARY ======= The TCP/IP protocol suite implementation for Windows NT 3.5x reads all of its configuration data from the registry. This information is written to the registry by the Network Control Panel Applet (NCPA) as part of the setup process. Some of this information is also supplied by the Dynamic Host Configuration Protocol (DHCP) client service if it is enabled. This reference defines all of the registry parameters used to configure the protocol driver, TCPIP.SYS, which implements the standard TCP/IP network protocols. The implementation of the protocol suite should perform properly and efficiently in most environments using only the configuration information gathered by the NCPA and DHCP. Optimal default values for all other configurable aspects of the protocols have been encoded into the drivers. There may be some unusual circumstances in customer installations where changes to certain default values are appropriate. To handle these cases, optional registry parameters can be created to modify the default behavior of some parts of the protocol drivers. CAUTION: The Windows NT 3.5 TCP/IP implementation is largely self tuning. Adjusting registry parameters without careful study may adversely affect system performance. MORE INFORMATION ================ WARNING: Using Registry Editor incorrectly can cause serious, system-wide problems that may require you to reinstall Windows NT to correct them. Microsoft cannot guarantee that any problems resulting from the use of Registry Editor can be solved. Use this tool at your own risk. To change these parameters, use the following procedure: 1. Run Registry Editor (REGEDT32.EXE). 2. From the HKEY_LOCAL_MACHINE subtree, go to the following key: \SYSTEM\CurrentControlSet\Services. 3. Add a value to the key described in the appropriate entry below, by selecting “Edit → Add Value”, typing in the value, and using the “Data Type” checkbox to set the value type. 4. Select OK. 5. Exit the Registry Editor. 6. Reboot the system to make the change take effect. All of the TCP/IP parameters are registry values located under one of two different subkeys of HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services: Tcpip\Parameters \Parameters\Tcpip where refers to the subkey for a network adapter that TCP/IP is bound to, such as Lance01. Values under the latter key(s) are specific to each adapter. Parameters for which there may be both a DHCP and statically configured value may or may not exist depending on whether the system/adapter is DHCP configured and/or static override values have been specified. A reboot of the system is required for a change in any of these parameters to take effect. IMPORTANT NOTE: The Windows NT 3.5 Resource Kit documentation was not updated properly from version 3.1, and lists a number of incorrect TCP/IP registry parameters. The parameters listed in this document should be used in their place. The Windows NT 3.5 TCP/IP stack was a complete re-write, so many of the old parameters are no longer valid. Standard Parameters Configurable using the Registry Editor ---------------------------------------------------------- The following parameters are installed with default values by the NCPA during the installation of the TCP/IP components. They may be modified using the Registry Editor (regedt32.exe). DatabasePath Key: Tcpip\Parameters Value Type: REG_EXPAND_SZ - Character string Valid Range: A valid Windows NT file path Default: %SystemRoot%\system32\drivers\etc Description: This parameter specifies the path to the standard internet database files (HOSTS, LMHOSTS, NETWORKS, PROTOCOLS). It is used by the Windows Sockets interface. ForwardBroadcasts Key: Tcpip\Parameters Value Type: REG_DWORD - Boolean Valid Range: 0 or 1 (False or True) Default: 0 (False) Description: Forwarding of broadcasts is not supported. This parameter is ignored. UseZeroBroadcast Key: \Parameters\Tcpip Value Type: REG_DWORD - Boolean Valid Range: 0 or 1 (False or True) Default: 0 (False) Description: If this parameter is set to 1 (True), then IP will use zeros- broadcasts (0.0.0.0) instead of ones-broadcasts (255.255.255.255). Most systems use ones- broadcasts, but some systems derived from BSD implementations use zeros-broadcasts. Systems that use different broadcasts will not interoperate well on the same network. Optional Parameters Configurable using the Registry Editor ---------------------------------------------------------- These parameters normally do not exist in the registry. They may be created to modify the default behavior of the TCP/IP protocol driver. ArpAlwaysSourceRoute (new in NT 3.51) Key: Tcpip\Parameters Value Type: REG_DWORD - Boolean Valid Range: 0,1 (False or True) Default: 0 (False) Description: Setting this parameter to 1 will force TCP/IP to transmit ARP queries with source routing enabled on Token Ring networks. By default, the stack transmits ARP queries without source routing first and retries with source routing enabled if no reply was received. ArpUseEtherSNAP Key: Tcpip\Parameters Value Type: REG_DWORD - Boolean Valid Range: 0,1 (False or True) Default: 0 (False) Description: Setting this parameter to 1 will force TCP/IP to transmit Ethernet packets using 802.3 SNAP encoding. By default, the stack transmits packets in DIX Ethernet format. It will always receive both formats. DefaultTOS Key: Tcpip\Parameters Value Type: REG_DWORD - Number Valid Range: 0 - 255 Default: 0 Description: Specifies the default Type Of Service (TOS) value set in the header of outgoing IP packets. See RFC 791 for a definition of the values. DefaultTTL Key: Tcpip\Parameters Value Type: REG_DWORD - Number of seconds/hops Valid Range: 1-255 Default: 32 Description: Specifies the default Time To Live (TTL) value set in the header of outgoing IP packets. The TTL determines the maximum amount of time an IP packet may live in the network without reaching its destination. It is effectively a limit on the number of routers an IP packet may pass through before being discarded. EnableDeadGWDetect Key: Tcpip\Parameters Value Type: REG_DWORD - Boolean Valid Range: 0,1 (False, True) Default: 1 (True) Description: Setting this parameter to 1 causes TCP to perform Dead Gateway Detection. With this feature enabled, TCP will ask IP to change to a backup gateway if it retransmits a segment several times without receiving a response. Backup gateways may be defined in the Advanced section of the TCP/IP configuration dialog in the Network Control Panel. EnablePMTUBHDetect Key: Tcpip\Parameters Value Type: REG_DWORD - Boolean Valid Range: 0,1 (False, True) Default: 0 (False) Description: Setting this parameter to 1 (True) causes TCP to try to detect Black Hole routers while doing Path MTU Discovery. A Black Hole router does not return ICMP Destination Unreachable messages when it needs to fragment an IP datagram with the Don t Fragment bit set. TCP depends on receiving these messages to perform Path MTU Discovery. With this feature enabled, TCP will try to send segments without the Don t Fragment bit set if several retransmissions of a segment go unacknowledged. If the segment is acknowledged as a result, the MSS will be decreased and the Don t Fragment bit will be set in future packets on the connection. Enabling black hole detection increases the maximum number of retransmissions performed for a given segment. EnablePMTUDiscovery Key: Tcpip\Parameters Value Type: REG_DWORD - Boolean Valid Range: 0,1 (False, True) Default: 1 (True) Description: Setting this parameter to 1 (True) causes TCP to attempt to discover the Maximum Transmission Unit (MTU or largest packet size) over the path to a remote host. By discovering the Path MTU and limiting TCP segments to this size, TCP can eliminate fragmentation at routers along the path that connect networks with different MTUs. Fragmentation adversely affects TCP throughput and network congestion. Setting this parameter to 0 causes an MTU of 576 bytes to be used for all connections that are not to machines on the local subnet. ForwardBufferMemory Key: Tcpip\Parameters Value Type: REG_DWORD - Number of bytes Valid Range: - <some reasonable value smaller than 0xFFFFFFFF > Default: 74240 (enough for fifty 1480-byte packets, rounded to a multiple of 256) Description: This parameter determines how much memory IP allocates to store packet data in the router packet queue. When this buffer space is filled, the router begins discarding packets at random from its queue. Packet queue data buffers are 256 bytes in length, so the value of this parameter should be a multiple of 256. Multiple buffers are chained together for larger packets. The IP header for a packet is stored separately. This parameter is ignored and no buffers are allocated if the IP router is not enabled. IGMPLevel Key: Tcpip\Parameters Value Type: REG_DWORD - Number Valid Range: 0,1,2 Default: 2 Description: This parameter determines to what extent the system supports IP multicasting and participates in the Internet Group Management Protocol. At level 0, the system provides no multicast support. At level 1, the system may only send IP multicast packets. At level 2, the system may send IP multicast packets and fully participate in IGMP to receive multicast packets. KeepAliveInterval Key: Tcpip\Parameters Value Type: REG_DWORD - Time in milliseconds Valid Range: 1 - 0xFFFFFFFF Default: 1000 (one second) Description: This parameter determines the interval separating keep alive retransmissions until a response is received. Once a response is receive, the delay until the next keep alive transmission is again controlled by the value of KeepAliveTime. The connection will be aborted after the number of retransmissions specified by TcpMaxDataRetransmissions have gone unanswered. KeepAliveTime Key: Tcpip\Parameters Value Type: REG_DWORD - Time in milliseconds Valid Range: 1 - 0xFFFFFFFF Default: 7,200,000 (two hours) Description: The parameter controls how often TCP attempts to verify that an idle connection is still intact by sending a keep alive packet. If the remote system is still reachable and functioning, it will acknowledge the keep alive transmission. Keep alive packets are not sent by default. This feature may be enabled on a connection by an application. MTU Key: \Parameters\Tcpip Value Type: REG_DWORD Number Valid Range: 68 - Default: 0xFFFFFFFF Description: This parameter overrides the default Maximum Transmission Unit (MTU) for a network interface. The MTU is the maximum packet size in bytes that the transport will transmit over the underlying network. The size includes the transport header. Note that an IP datagram may span multiple packets. Values larger than the default for the underlying network will result in the transport using the network default MTU. Values smaller than 68 will result in the tranport using an MTU of 68. NumForwardPackets Key: Tcpip\Parameters Value Type: REG_DWORD Number Valid Range: 1 - <some reasonable value smaller than 0xFFFFFFFF> Default: 50 Description: This parameter determines the number of IP packet headers allocated for the router packet queue. When all headers are in use, the router will begin to discard packets at random from the queue. This value should be at least as large as the ForwardBufferMemory value divided by the maximum IP data size of the networks connected to the router. It should be no larger than the ForwardBufferMemory value divided by 256, since at least 256 bytes of forward buffer memory are used for each packet. The optimal number of forward packets for a given ForwardBufferMemory size depends on the type of traffic carried on the network and will be somewhere in between these two values. This parameter is ignored and no headers are allocated if the router is not enabled. TcpMaxConnectRetransmissions Key: Tcpip\Parameters Value Type: REG_DWORD - Number Valid Range: 0 - 0xFFFFFFFF Default: 3 Description: This parameter determines the number of times TCP will retransmit a connect request (SYN) before aborting the attempt. The retransmission timeout is doubled with each successive retransmission in a given connect attempt. The initial timeout value is three seconds. TcpMaxDataRetransmissions Key: Tcpip\Parameters Value Type: REG_DWORD - Number Valid Range: 0 - 0xFFFFFFFF Default: 5 Description: This parameter controls the number of times TCP will retransmit an individual data segment (non connect segment) before aborting the connection. The retransmission timeout is doubled with each successive retransmission on a connection. It is reset when responses resume. The base timeout value is dynamically determined by the measured round-trip time on the connection. TcpNumConnections Key: Tcpip\Parameters Value Type: REG_DWORD - Number Valid Range: 0 - 0xfffffe Default: 0xfffffe Description: This parameter limits the maximum number of connections that TCP may have open simultaneously. TcpUseRFC1122UrgentPointer Key: Tcpip\Parameters Value Type: REG_DWORD - Boolean Valid Range: 0,1 (False, True) Default: 0 (False) Description: This parameter determines whether TCP uses the RFC 1122 specification for urgent data or the mode used by BSD- derived systems. The two mechanisms interpret the urgent pointer in the TCP header and the length of the urgent data differently. They are not interoperable. Windows NT defaults to BSD mode. TcpWindowSize Key: Tcpip\Parameters Value Type: REG_DWORD - Number of bytes Valid Range: 0 - 0xFFFF Default: The smaller of 0xFFFF OR (The larger of four times the maximum TCP data size on the network OR 8192 rounded up to an even multiple of the network TCP data size.) The default is 8760 for Ethernet. Description: This parameter determines the maximum TCP receive window size offered by the system. The receive window specifies the number of bytes a sender may transmit without receiving an acknowledgment. In general, larger receive windows will improve performance over high (delay * bandwidth ) networks. For highest efficiency, the receive window should be an even multiple of the TCP Maximum Segment Size (MSS). Parameters Configurable from the NCPA ------------------------------------- The following parameters are created and modified automatically by the NCPA as a result of user-supplied information. There should be no need to configure them directly in the registry. DefaultGateway Key: \Parameters\Tcpip Value Type: REG_MULTI_SZ - List of dotted decimal IP addresses Valid Range: Any set of valid IP addresses Default: None Description: This parameter specifies the list of gateways to be used to route packets not destined for a subnet that the computer is directly connected to, and for which a more specific route does not exist. This parameter, if it has a valid value, overrides the DhcpDefaultGateway parameter. Domain Key: Tcpip\Parameters Value Type: REG_SZ - Character string Valid Range: Any valid DNS domain name Default: None Description: This parameter specifies the DNS domain name of the system. It is used by the Windows Sockets interface. EnableDhcp Key: \Parameters\Tcpip Value Type: REG_DWORD - Boolean Valid Range: 0 or 1 (False or True) Default: 0 (False) Description: If this parameter is set to 1 (True), then the DHCP client service will attempt to configure the first IP interface on the adapter using DHCP. Hostname Key: Tcpip\Parameters Value Type: REG_SZ - Character string Valid Range: Any valid DNS hostname Default: The computername of the system Description: This parameter specifies the DNS hostname of the system, that will be returned by the hostname command. IPAddress Key: \Parameters\Tcpip Value Type: REG_MULTI_SZ - List of dotted- decimal IP addresses Valid Range: Any set of valid IP addresses Default: None Description: This parameter specifies the IP addresses of the IP interfaces to be bound to the adapter. If the first address in the list is 0.0.0.0, then the primary interface on the adapter will be configured from DHCP. A system with more than one IP interface for an adapter is called logically multihomed. There must be a valid subnet mask value in the SubnetMask parameter for each IP address specified in this parameter. IPEnableRouter Key: Tcpip\Parameters Value Type: REG_DWORD - Boolean Valid Range: 0 or 1 (False or True) Default: 0 (False) Description: Setting this parameter to 1 (True) causes the system to route IP packets between the networks that it is connected to. NameServer Key: Tcpip\Parameters Value Type: REG_SZ - A space delimited list of dotted decimal IP addresses Valid Range: Any set of valid IP address Default: None (Blank) Description: This parameter specifies the DNS name servers to be queried by Windows Sockets to resolve names. SearchList Key: Tcpip\Parameters Value Type: REG_SZ - Space delimited list of DNS domain name suffixes Valid Range: Any set of valid DNS domain name suffixes Default: None Description: This parameter specifies a list of domain name suffixes to append to a name to be resolved via the DNS if resolution of the unadorned name fails. By default, the value of the Domain parameter is appended only. This parameter is used by the Windows Sockets interface. SubnetMask Key: \Parameters\Tcpip Value Type: REG_MULTI_SZ - List of dotted decimal IP addresses Valid Range: Any set of valid IP addresses. Default: None Description: This parameter specifies the subnet masks to be used with the IP interfaces bound to the adapter. If the first mask in the list is 0.0.0.0, then the primary interface on the adapter will be configured via DHCP. There must be a valid subnet mask value in the this parameter for each IP address specified in the IPAddress parameter. Parameters Configurable via the Route.exe Command in Windows NT 3.51 -------------------------------------------------------------------- In Windows NT 3.51, the route.exe command stores persistent IP routes as values under the Tcpip\Parameters\PersistentRoutes key. Each route is stored in the value name string as a comma-delimited list of the form: destination,subnet mask,gateway For example, the value representing a host route to destination 45.100.23.10 through gateway 131.110.0.1 would be named: 45.100.23.10,255.255.255.255,131.110.0.1 The value type is a REG_SZ. There is no value data (empty string). Addition and deletion of these values can be accomplished entirely using the route command. There should be no need to configure them directly. Non-Configurable Parameters --------------------------- The following parameters are created and used internally by the TCP/IP components. They should never be modified using the Registry Editor. They are listed here for reference only. DhcpDefaultGateway Key: \Parameters\ Tcpip Value Type: REG_MULTI_SZ - List of dotted decimal IP addresses Valid Range: Any set of valid IP addresses Default: None Description: This parameter specifies the list of default gateways to be used to route packets not destined for a subnet that the computer is directly connected to, and for which a more specific route does not exist. This parameter is written by the DHCP client service, if enabled. This parameter is overridden by a valid DefaultGateway parameter value. DhcpIPAddress Key: \Parameters\Tcpip Value Type: REG_SZ - Dotted decimal IP address Valid Range: Any valid IP address Default: None Description: This parameter specifies the DHCP-configured IP address for the interface. If the IPAddress parameter contains a first value other than 0.0.0.0, then that value will override this parameter. DhcpNameServer Key: Tcpip\Parameters Value Type: REG_SZ - A space delimited list of dotted decimal IP addresses Valid Range: Any set of valid IP address Default: None Description: This parameter specifies the DNS name servers to be queried by Windows Sockets to resolve names. It is written by the DHCP client service, if enabled. If the NameServer parameter has a valid value, then it will override this parameter. DhcpServer Key: \Parameters\Tcpip Value Type: REG_SZ - Dotted decimal IP address Valid Range: Any valid IP address Default: None Description: This parameter specifies the IP address of the DHCP server that granted the lease on the IP address in the DhcpIPAddress parameter. DhcpSubnetMask Key: \Parameters\Tcpip Value Type: REG_SZ - Dotted decimal IP subnet mask Valid Range: Any subnet mask that is valid for the configured IP address Default: None Description: This parameter specifies the DHCP-configured subnet mask for the address specified in the DhcpIPAddress parameter. IPInterfaceContext Key: \Parameters\Tcpip Value Type: REG_DWORD Valid Range: 0 - 0xFFFFFFFF Default: None Description: This parameter is written by the TCP/IP driver for use by the DHCP client service. Lease Key: \Parameters\Tcpip Value Type: REG_DWORD - Time in seconds Valid Range: 1 - 0xFFFFFFFF Default: None Description: This parameter is used by the DHCP client service to store the time in seconds that the lease on the IP address for this adapter is valid for. LeaseObtainedTime Key: \Parameters\Tcpip Value Type: REG_DWORD - Absolute time in seconds since midnight of 1/1/70 Valid Range: 1 - 0xFFFFFFFF Default: None Description: This parameter is used by the DHCP client service to store the time at which the lease on the IP address for this adapter was obtained. LeaseTerminatesTime Key: \Parameters\Tcpip Value Type: REG_DWORD - Absolute time in seconds since midnight of 1/1/70 Valid Range: 1 - 0xFFFFFFFF Default: None Description: This parameter is used by the DHCP client service to store the time at which the lease on the IP address for this adapter will expire. LLInterface Key: \Parameters\Tcpip Value Type: REG_SZ - NT device name Valid Range: A legal NT device name Default: Empty string (Blank) Description: This parameter is used to direct IP to bind to a different link-layer protocol than the built-in ARP module. The value of the parameter is the name of the Windows NT device that IP should bind to. This parameter is in conjunction with the RAS component, for example. T1 Key: \Parameters\Tcpip Value Type: REG_DWORD - Absolute time in seconds since midnight of 1/1/70 Valid Range: 1 - 0xFFFFFFFF Default: None Description: This parameter is used by the DHCP client service to store the time at which the service will first try to renew the lease on the IP address for the adapter by contacting the server that granted the lease. T2 Key: \Parameters\Tcpip Value Type: REG_DWORD - Absolute time in seconds since midnight of 1/1/70 Valid Range: 1 - 0xFFFFFFFF Default: None Description: This parameter is used by the DHCP client service to store the time at which the service will try to renew the lease on the IP address for the adapter by broadcasting a renewal request. Time T2 should only be reached if the service has been unable to renew the lease with the original server for some reason. NBT === All of the NBT parameters are registry values located under one of two different subkeys of HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es: Netbt\Parameters Netbt\Adapters<Adapter Name> where refers the subkey for a network adapter that NBT is bound to, such as Lance01. Values under the latter key(s) are specific to each adapter. If the system is configured via DHCP, then a change in parameters will take effect if the command ipconfig /renew is issued in a command shell. Otherwise, a reboot of the system is required for a change in any of these parameters to take effect.

I think there are two kind of solutions for your problem: The hard way: - Try to write an automation or OCX ActiveXControl, which you load in the LoginStart Codeunit, and the automation or controll watches for mouse and keyboard activity (hookes on keyboard handling and mouse movement coordinates) After a period of time which you set up in the control, the OCX unloads the service FIN.EXE from the client computer, so the client is not using session any more, until next start of NAV. The soft way: - Still in the LoginStart codeunit try to add a section for inactivity surveilance, but therefor you will also need an external tool, which is watching the activity. With the soft solution it is the problem, that you cannot close down the whole NAVI, but you can use CLOSECOMPANY to avoid idle use of database sessions. For your future question the answer is: YES, this kind of control is existing already, so it is not impossible to write such one. Hope I could help you,

Chino, closing the company will not “save” the user license. You must disconnect from the database to do that. [V] Its probably best to stick with ExpandIT, since they have the most experience, and have a reliable stable product. The other option not mentioned here, is the really tough one. i.e. training users to log off when they have finished, and not to open Navision twice. [:D]