[SYNCOPE-1644] Fixing job reporting
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SyncopeSpringBeanJobFactory.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SyncopeSpringBeanJobFactory.java
index c690f39..6565f27 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SyncopeSpringBeanJobFactory.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SyncopeSpringBeanJobFactory.java
@@ -21,11 +21,17 @@
 import java.util.Optional;
 import org.apache.syncope.core.provisioning.api.job.JobManager;
 import org.apache.syncope.core.provisioning.java.job.report.ReportJob;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.quartz.spi.TriggerFiredBundle;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
 import org.springframework.scheduling.quartz.SpringBeanJobFactory;
 
 public class SyncopeSpringBeanJobFactory extends SpringBeanJobFactory {
 
+    private static final Logger LOG = LoggerFactory.getLogger(SyncopeSpringBeanJobFactory.class);
+
     @Override
     protected Object createJobInstance(final TriggerFiredBundle bundle) throws Exception {
         Object job = super.createJobInstance(bundle);
@@ -40,6 +46,16 @@
             }
         }
 
+        DefaultListableBeanFactory factory = ApplicationContextProvider.getBeanFactory();
+        try {
+            if (factory.containsSingleton(bundle.getJobDetail().getKey().getName())) {
+                factory.destroySingleton(bundle.getJobDetail().getKey().getName());
+            }
+            factory.registerSingleton(bundle.getJobDetail().getKey().getName(), job);
+        } catch (Exception e) {
+            LOG.error("While attempting to replace job instance as singleton Spring bean", e);
+        }
+
         return job;
     }
 }