/// <summary>
        /// The run.
        /// </summary>
        /// <param name="filePath">
        /// The file path.
        /// </param>
        /// <param name="fileName">
        /// The file name.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool Run(string filePath, string fileName)
        {
            // instantiate all necessary modules
            var connectionStatus = new Functions.StatusArea.Statusbar.Statusbar_Functions();
            var execFunction     = new Functions.Helpers.InterfaceHelpers.DTMFunctions();
            var devScreen        = new Functions.ApplicationArea.Page_DeviceScreen.Page_DeviceScreen_Functions();

            string fileLocation;
            string basePath;

            // set all necessary parameters
            devScreen.IsRestoreRequest = false;

            // check if device is online
            if (connectionStatus.IsDeviceConnected())
            {
                Log.Info(LogInfo.Namespace(MethodBase.GetCurrentMethod()), "Device is connected. Saving device data...");

                // click button "program functions"
                devScreen.OpenProgramFunctionsMenu();

                // check if menu is open
                if (devScreen.IsDTMFunctionMenuShown())
                {
                    // select "save device data"
                    devScreen.RunDTMFunction();

                    // wait until process is finished
                    if (connectionStatus.IsActionFinished())
                    {
                        // get event message text
                        string msg = connectionStatus.GetStatusMessage();

                        // check if saving was successful
                        if (msg.Contains("set has been saved"))
                        {
                            // get file path and extract basepath
                            fileLocation = connectionStatus.GetFileLocationFromStatusMessage(msg);
                            basePath     = connectionStatus.GetBasePath(fileLocation);

                            // construct the destination path
                            string finalizedPath = filePath + "\\" + fileName + ".dcdtm";

                            // rename the file
                            execFunction.MoveFile(fileLocation, finalizedPath);

                            // check if renaming was successful
                            if (File.Exists(finalizedPath))
                            {
                                Log.Info(LogInfo.Namespace(MethodBase.GetCurrentMethod()), "The file was successfully created. File location: " + finalizedPath);
                                return(true);
                            }
                        }
                    }
                }
            }

            return(false);
        }