/// <summary>
        /// add or reuse a tracker for the given clientID
        /// </summary>
        /// <param name="AClientID"></param>
        /// <param name="ACaption"></param>
        /// <param name="AAbsoluteOverallAmount"></param>
        /// <returns></returns>
        static public TProgressState InitProgressTracker(string AClientID, string ACaption, decimal AAbsoluteOverallAmount = 100.0m)
        {
            TProgressState state = new TProgressState();

            state.AbsoluteOverallAmount = AAbsoluteOverallAmount;
            state.Caption = ACaption;

            // First clear all progress trackers. We cannot have too many variables in the session. We only work with one progress tracker per session.
            TSession.ClearVariables(PROGRESSTRACKER);

            TSession.SetVariable(PROGRESSTRACKER + AClientID, state);

            return(state);
        }