function allRunStatus = getRunStatus()
    %% GETRUNSTATUS function queries data layer for run status of all the runs
    
    % Copyright 2018-2019 The MathWorks, Inc.
    
    % Get FPT Instance
    fpt = fxptui.FixedPointTool.getExistingInstance;
    
    dataLayer = fxptds.DataLayerInterface.getInstance();
    
    % Get all Actions registered from the TopModel
    % In the future, it is possible to remove the type constraint and get
    % all reports from a container (Setup, Prepare, Baseline, fxp_16, etc)
    % include 'exclude' 'none' so that the run browser can get the updated
    % status of invalidated runs
    model = fpt.getModel();
    facade = dataLayer.getWorkflowTopologyFacade(model);
    if fixed.internal.utility.featuremanager.FeatureManager.getStatus('fxpoptInFPT') == 15
        currentWorkflow = dataLayer.getCurrentWorkflow(model);
        currentWorkflowID = currentWorkflow.ID;
        allRawReports = facade.query(model, 'type', 'Action', 'property', 'Report', 'sortDirection', 'ascend', 'containerID', currentWorkflowID);
    else
        allRawReports = facade.query(model, 'type', 'Action', 'property', 'Report', 'sortDirection', 'ascend', 'exclude', 'none');
    end
    
    allRunStatus = cell(numel(allRawReports), 1);
    
    % Loop through all the runs and query for run status one by one
    for idx = 1:numel(allRawReports)
        report = allRawReports{idx};
        if ~isempty(report)
            s = struct();
            s.UniqueID = report.Name;
            s.ParentID = report.ParentID;
            s.Type = string(report.Type);
            if strcmp(report.Type, fxptui.message('actionTypeSimulate')) ...
                    || strcmp(report.Type, fxptui.message('actionTypeDerive'))
                s.Label = dataLayer.getRunNameFromID(fpt.Converter.TopModel, report.VerificationFPTID);
                s.VerificationStatus = string(report.VerificationStatus);
                s.BaselineRunName = dataLayer.getRunNameFromID(fpt.Converter.TopModel, report.BaselineFPTID);
            elseif strcmp(report.Type, fxptui.message('actionTypePrepare'))
                s.UniqueID = report.Name;
            end
            allRunStatus{idx} = s;
        end
    end
    
    % remove all empty run status
    allRunStatus = allRunStatus(~cellfun(@isempty,allRunStatus));
    
end
