Service Tier Administration Tool v3.3.0
Version 3.3.0 (2019-01-02)
Opening dialogs considerably faster for remote folders.
Tooltips on buttons in the menu.
New function "Update Service Name from Settings" which updates the name of the selected services. How this is configured comes from the settings.
New function "Start Classic (GSR)". Starts the DEV with -generatesymbolreference.
Fixed a problem where some services were not listed.
Big fan of the utility - been using it for years. Unfortunately new version errors when I try to create new services. Had to downgrade back to previous version.
First of all a big thanks for maintaining this great tool!
In the latest version i also receive the error "The Build Version folder C:\Program Files\Microsoft Dynamics NAV\130.26413\Service\Microsoft.Dynamics.Nav.Server.exe does not contain any service folders !" after selecting a base folder from the list.
Yes, sry for that. I have found it and fixed yesterday. I test some other scenarios at the moment and will release a new version today or tomorrow morning.
Great tool that I've used for years. However, while I may have conquered NAV development and made a good living at it, I never could figure out how to configure this tool. (My bad!) I no longer have access to the wizards I used to work with who knew it inside-out, so I know I'll be fumbling around making a mess trying to set this up on a new machine. Is there any documentation anywhere? (Probably - and I've just made a fool of myself! :-)
I never could figure out how to configure this tool.
Well, you are not alone, neither could I.
There is some additional information/documentation in this thread here but it still did not help me sort things out.
Currently I get versions placed in Build Update Folder showing in Create New Service and the error
"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." (Object is not instantiated) when clicking on Update Service (with version 3.3.1.0).
First of all thank you so much for this excellent tool! I have been using it for years and it is absolutely fantastic!
I would like to report a bug if I may. There seems to be an issue on category filtering. Say I have some services set up, with categories A and B. I can filter on A. Then I can clear the filter. I try to filter on B and get the error below:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at ServiceTierAdministration.MainWindow.YkCKevqyhn(Object , EditModeEndedEventArgs )
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at Infragistics.Windows.DataPresenter.DataPresenterBase.OnEditModeEnded(EditModeEndedEventArgs args)
at Infragistics.Windows.DataPresenter.CellValuePresenter.OnEditModeEnded(EditModeEndedEventArgs e)
at Infragistics.Windows.Editors.ValuePresenter.ClassHandler_EditModeEnded(Object sender, EditModeEndedEventArgs e)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at Infragistics.Windows.Editors.ValueEditor.RaiseEventHelper(RoutedEventArgs args)
at Infragistics.Windows.Editors.ValueEditor.OnEditModeEnded(EditModeEndedEventArgs args)
at Infragistics.Windows.Editors.ValueEditor.EndEditMode(Boolean acceptChanges, Boolean force)
at Infragistics.Windows.DataPresenter.DataPresenterBase.ClearActiveCell(Boolean shutdown, Boolean calledFromSetActiveCell)
at Infragistics.Windows.DataPresenter.DataPresenterBase.OnActiveRecordCleared(Boolean update)
at Infragistics.Windows.DataPresenter.DataPresenterBase.SetActiveRecord(Record record, Boolean scrollIntoView)
at Infragistics.Windows.DataPresenter.DataPresenterBase.OnCoerceActiveRecord(DependencyObject target, Object value)
at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
at Infragistics.Windows.DataPresenter.DataPresenterBase.Infragistics.Windows.Selection.ISelectionHost.ActivateItem(ISelectableItem item, Boolean preventScrollItemIntoView)
at Infragistics.Windows.Selection.SelectionStrategyExtended.ProcessMouseLeftButtonDown(ISelectableItem item, MouseEventArgs e, Boolean forceDrag)
at Infragistics.Windows.Selection.SelectionController.OnMouseLeftButtonDown(MouseButtonEventArgs e)
at Infragistics.Windows.Controls.IGControlBase.OnMouseLeftButtonDown(MouseButtonEventArgs e)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
at System.Windows.UIElement.OnMouseDownThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
OK
Other columns filter correctly! If you need any more details let me know!
Thanks for this great tool, I use it all the time!
There is only one thing it seems to lack and that is the ability to start finsql with the command line option "generatesymbolreference=yes".
This is required if you do hybrid development so it generates symbols when you compile an object.
What do I need to setup to be able to install Business Central services and clients in STAT? I have copied folders and files to the Builds and Base version folders. Also I am able to choose the two builds I currently have set up, when I click the 'Create Service' button, but when I select either one of them I get the message 'No Navision base version found for the chosen build update 13.0.xxxxx'. What am I doing wrong?
If I create services manually, I tend to place them in non-default locations. All default services do show the configuration, the manually installed services do not show the configuration (although the services are running (and it shows it's running). I create those services by copying the original directory to a new folder and then run sc create. If I try to view config, it says tat the configuration file does not exist. Why does this happen?
Could it be that the administrationtool needs the config parameter from the imagepath in \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<servicename>?. I usually don't use these, as the Dynamics NAV server will use the customsettings.config file in the same directory as where the executable is in when there is no config defined.
Hello, we have a problem on a server with one user, he get allways a message (Client Settings not saved! Error: '.' hexidezimaler Wert 0x00, ist ein ungültiges Zeichen. Zeile 1, Position 1). Other users on this server can work without problems with the service tier administration tool.
What do I need to setup to be able to install Business Central services and clients in STAT? I have copied folders and files to the Builds and Base version folders. Also I am able to choose the two builds I currently have set up, when I click the 'Create Service' button, but when I select either one of them I get the message 'No Navision base version found for the chosen build update 13.0.xxxxx'. What am I doing wrong?
Am I doing something wrong? I was recommended this tool for NAV BC, but there seem to be lots of settings missing. EG on the Business Central Administration Tool there are 20 options to set for ODATA, but this tool only lets you see 10 ?
First things first : great tool !
That said, since the latest update (3.4), whenever I try to start the classic or RTC client for a configuration, the systems first shows 2 options to select from, although no specific RTC Version Settings or classic client version settings have been specified ?
Hi, first of all it 's a great tool.
My questions
What is the difference between SC Name and Service Name ?
Is it possible to change only SC Name in order to keep some information about instance with no other effect ?
Thank you and keep up the good work.
Been using this for a while, currently on v3.4, but have recently encountered some issues.
1. When creating BC services, it doesn't seem to create the required registry key for eventlog permissions. i.e., I am not seeing this one created: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\MicrosoftDynamicsNavServer$SERVICENAME
2. When creating BC services, the "modern dev" doesn't work. This may be an issue on my end with some part missing, but I haven't figured that out either.
3. I place NAV and BC into the same folder and changed that in my settings. Once I did the latter, whenever I launch any client, it asks me to select version, from two that are identical: https://i.imgur.com/v7MEdPd.png
Where is this list and how can I get it back to one so I don't have this selection?
I have not been active in the forum for a very long time.
This is because we use the tool itself only very rarely. But I will try to come back here regularly to fix bugs and problems that still exist. There are still enough customers who use NAV.
I will fix errors and bugs that were written after this post, as I can't track which ones are current and who could help themselves .
Hi there,
not sure if it has been asked already... is there an option to change a certain setting in all instances at once? e.g. if I want to increase Data Cache Size in all my NAV/BC servers.
"Money is likewise the greatest chance and the greatest scourge of mankind."
Comments
Version 3.3.0 (2019-01-02)
Opening dialogs considerably faster for remote folders.
Tooltips on buttons in the menu.
New function "Update Service Name from Settings" which updates the name of the selected services. How this is configured comes from the settings.
New function "Start Classic (GSR)". Starts the DEV with -generatesymbolreference.
Fixed a problem where some services were not listed.
https://mibuso.com/downloads/service-tier-administration-tool
Discuss this download here.
Do you use the build update folder or the NST Settings to create the service?
In the latest version i also receive the error "The Build Version folder C:\Program Files\Microsoft Dynamics NAV\130.26413\Service\Microsoft.Dynamics.Nav.Server.exe does not contain any service folders !" after selecting a base folder from the list.
I'm using the NST Settings to create a service.
Version 3.3.1 (2019-01-03)
Solve problems with NST Settings, RTC Settings and Classic Settings.
https://mibuso.com/downloads/service-tier-administration-tool
Discuss this download here.
There is some additional information/documentation in this thread here but it still did not help me sort things out.
Currently I get versions placed in Build Update Folder showing in Create New Service and the error
"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." (Object is not instantiated) when clicking on Update Service (with version 3.3.1.0).
First of all thank you so much for this excellent tool! I have been using it for years and it is absolutely fantastic!
I would like to report a bug if I may. There seems to be an issue on category filtering. Say I have some services set up, with categories A and B. I can filter on A. Then I can clear the filter. I try to filter on B and get the error below:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at ServiceTierAdministration.MainWindow.YkCKevqyhn(Object , EditModeEndedEventArgs )
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at Infragistics.Windows.DataPresenter.DataPresenterBase.OnEditModeEnded(EditModeEndedEventArgs args)
at Infragistics.Windows.DataPresenter.CellValuePresenter.OnEditModeEnded(EditModeEndedEventArgs e)
at Infragistics.Windows.Editors.ValuePresenter.ClassHandler_EditModeEnded(Object sender, EditModeEndedEventArgs e)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at Infragistics.Windows.Editors.ValueEditor.RaiseEventHelper(RoutedEventArgs args)
at Infragistics.Windows.Editors.ValueEditor.OnEditModeEnded(EditModeEndedEventArgs args)
at Infragistics.Windows.Editors.ValueEditor.EndEditMode(Boolean acceptChanges, Boolean force)
at Infragistics.Windows.DataPresenter.DataPresenterBase.ClearActiveCell(Boolean shutdown, Boolean calledFromSetActiveCell)
at Infragistics.Windows.DataPresenter.DataPresenterBase.OnActiveRecordCleared(Boolean update)
at Infragistics.Windows.DataPresenter.DataPresenterBase.SetActiveRecord(Record record, Boolean scrollIntoView)
at Infragistics.Windows.DataPresenter.DataPresenterBase.OnCoerceActiveRecord(DependencyObject target, Object value)
at System.Windows.DependencyObject.ProcessCoerceValue(DependencyProperty dp, PropertyMetadata metadata, EntryIndex& entryIndex, Int32& targetIndex, EffectiveValueEntry& newEntry, EffectiveValueEntry& oldEntry, Object& oldValue, Object baseValue, Object controlValue, CoerceValueCallback coerceValueCallback, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, Boolean skipBaseValueChecks)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
at Infragistics.Windows.DataPresenter.DataPresenterBase.Infragistics.Windows.Selection.ISelectionHost.ActivateItem(ISelectableItem item, Boolean preventScrollItemIntoView)
at Infragistics.Windows.Selection.SelectionStrategyExtended.ProcessMouseLeftButtonDown(ISelectableItem item, MouseEventArgs e, Boolean forceDrag)
at Infragistics.Windows.Selection.SelectionController.OnMouseLeftButtonDown(MouseButtonEventArgs e)
at Infragistics.Windows.Controls.IGControlBase.OnMouseLeftButtonDown(MouseButtonEventArgs e)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
at System.Windows.UIElement.OnMouseDownThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
OK
Other columns filter correctly! If you need any more details let me know!
How does this work? It doesn't seem to be doing anything. I wanted to update a service I'm reusing, but it doesn't do anything?
There is only one thing it seems to lack and that is the ability to start finsql with the command line option "generatesymbolreference=yes".
This is required if you do hybrid development so it generates symbols when you compile an object.
Could it be that the administrationtool needs the config parameter from the imagepath in \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<servicename>?. I usually don't use these, as the Dynamics NAV server will use the customsettings.config file in the same directory as where the executable is in when there is no config defined.
First off, thanks for this tool.
My question. "No Navision base version found for the chosen build update 13.X.XXXXX"
Does the tool support Business Central?
Thank you
Same issue. Are you still getting the error?
Rather use the "NST Version Settings" button. Point to the correct version NST.
You will then be able to create a service with the correct files
That said, since the latest update (3.4), whenever I try to start the classic or RTC client for a configuration, the systems first shows 2 options to select from, although no specific RTC Version Settings or classic client version settings have been specified ?
My questions
What is the difference between SC Name and Service Name ?
Is it possible to change only SC Name in order to keep some information about instance with no other effect ?
Thank you and keep up the good work.
1. When creating BC services, it doesn't seem to create the required registry key for eventlog permissions. i.e., I am not seeing this one created: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\MicrosoftDynamicsNavServer$SERVICENAME
2. When creating BC services, the "modern dev" doesn't work. This may be an issue on my end with some part missing, but I haven't figured that out either.
3. I place NAV and BC into the same folder and changed that in my settings. Once I did the latter, whenever I launch any client, it asks me to select version, from two that are identical: https://i.imgur.com/v7MEdPd.png
Where is this list and how can I get it back to one so I don't have this selection?
I have not been active in the forum for a very long time.
This is because we use the tool itself only very rarely. But I will try to come back here regularly to fix bugs and problems that still exist. There are still enough customers who use NAV.
I will fix errors and bugs that were written after this post, as I can't track which ones are current and who could help themselves .
Best regards
Version 3.3.1 (2019-01-03)
NEW: Support for Microsoft Business Central 130 and all settings
NEW: Support for Microsoft Business Central 140 and all setting
https://mibuso.com/downloads/service-tier-administration-tool
Discuss this download here.
not sure if it has been asked already... is there an option to change a certain setting in all instances at once? e.g. if I want to increase Data Cache Size in all my NAV/BC servers.