def METHOD_NAME(self):
    """
    Execute one agent cycle. Upload log files to the SE and register them in the DFC.
    Use a shifter proxy dynamically loaded for every VO
    :param self: self reference
    """
    voRes = {}
    for vo in self.voList:
        self.opsHelper = Operations(vo=vo)
        # is remote pilot logging enabled for the VO ?
        pilotLogging = self.opsHelper.getValue("/Pilot/RemoteLogging", False)
        if pilotLogging:
            res = self.opsHelper.getOptionsDict("Shifter/DataManager")
            if not res["OK"]:
                voRes[vo] = "No shifter defined - skipped"
                self.log.error(f"No shifter defined for VO: {vo} - skipping ...")
                continue
            proxyUser = res["Value"].get("User")
            proxyGroup = res["Value"].get("Group")
            if proxyGroup is None or proxyUser is None:
                self.log.error(
                    f"No proxy user or group defined for pilot: VO: {vo}, User: {proxyUser}, Group: {proxyGroup}"
                )
                voRes[vo] = "No proxy user or group defined - skipped"
                continue
            self.log.info(f"Proxy used for pilot logging: VO: {vo}, User: {proxyUser}, Group: {proxyGroup}")
            res = self.executeForVO(  # pylint: disable=unexpected-keyword-arg
                vo, proxyUserName=proxyUser, proxyUserGroup=proxyGroup
            )
            if not res["OK"]:
                voRes[vo] = res["Message"]
    if voRes:
        for key, value in voRes.items():
            self.log.error(f"Error for {key} vo; message: {value}")
        voRes.update(S_ERROR("Agent cycle for some VO finished with errors"))
        return voRes
    return S_OK()