private void cleanUpApplicationDependencies(SeaCloudsApplicationData seaCloudsApplicationData) {

    // TODO: Undo observers (Maybe they are removed when MR are removed)

    // TODO: Undo grafana

    if (seaCloudsApplicationData.getMonitoringRulesTemplateId() != null) {
      try {
        for (String ruleId : seaCloudsApplicationData.getMonitoringRulesIds()) {
          monitor.removeMonitoringRule(ruleId);
        }
      } catch (Exception e) {
        LOG.debug("Something went wrong during the cleanup of the monitoring rules");
        // This is perfectly fine, it will happen if this phase was not reached before the error.
      }
    }
    if (seaCloudsApplicationData.getAgreementId() != null) {
      try {
        sla.removeAgreement(seaCloudsApplicationData.getAgreementId());
      } catch (Exception e) {
        LOG.debug("Something went wrong during the cleanup of the agreement");
        // This is perfectly fine, it will happen if this phase was not reached before the error.
      }
    }
    try {
      deployer.removeApplication(seaCloudsApplicationData.getDeployerApplicationId());
    } catch (Exception e) {
      LOG.debug("Something went wrong during the cleanup of the application");
      // This is perfectly fine, it will happen if this phase was not reached before the error.
    }
  }