diff --git a/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java b/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java
index 25fcb8f48f122fb36d3ede73b2dc468bb6b953eb..5e5c00cd71c66ecd744208b2634796fab1b703e1 100644
--- a/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java
+++ b/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java
@@ -70,9 +70,9 @@ import org.olat.ims.qti21.AssessmentItemSession;
 import org.olat.ims.qti21.AssessmentResponse;
 import org.olat.ims.qti21.AssessmentTestSession;
 import org.olat.ims.qti21.QTI21Service;
+import org.olat.ims.qti21.manager.AssessmentItemSessionDAO;
 import org.olat.ims.qti21.manager.AssessmentResponseDAO;
 import org.olat.ims.qti21.manager.AssessmentTestSessionDAO;
-import org.olat.ims.qti21.manager.QTI21ServiceImpl;
 import org.olat.ims.qti21.manager.archive.interactions.AssociateInteractionArchive;
 import org.olat.ims.qti21.manager.archive.interactions.ChoiceInteractionArchive;
 import org.olat.ims.qti21.manager.archive.interactions.DefaultInteractionArchive;
@@ -99,6 +99,7 @@ import org.olat.modules.assessment.AssessmentEntry;
 import org.olat.repository.RepositoryEntry;
 import org.olat.user.UserManager;
 import org.olat.user.propertyhandlers.UserPropertyHandler;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem;
 import uk.ac.ed.ph.jqtiplus.node.item.interaction.AssociateInteraction;
@@ -156,13 +157,22 @@ public class QTI21ArchiveFormat {
 	private List<AbstractInfos> elementInfos;
 	private final Map<String, InteractionArchive> interactionArchiveMap = new HashMap<>();
 	
-	private final QTI21Service qtiService;
-	private final UserManager userManager;
-	private final AssessmentResponseDAO responseDao;
-	private final AssessmentTestSessionDAO testSessionDao;
-	private final CourseAssessmentService courseAssessmentService;
+	@Autowired
+	private QTI21Service qtiService;
+	@Autowired
+	private UserManager userManager;
+	@Autowired
+	private AssessmentResponseDAO responseDao;
+	@Autowired
+	private AssessmentTestSessionDAO testSessionDao;
+	@Autowired
+	private AssessmentItemSessionDAO itemSessionDao;
+	@Autowired
+	private CourseAssessmentService courseAssessmentService;
 	
 	public QTI21ArchiveFormat(Locale locale, QTI21StatisticSearchParams searchParams) {
+		CoreSpringFactory.autowireObject(this);
+		
 		this.searchParams = searchParams;
 		if(searchParams.getArchiveOptions() == null || searchParams.getArchiveOptions().getExportFormat() == null) {
 			exportConfig = new ExportFormat(true, true, true, true, true);
@@ -170,12 +180,6 @@ public class QTI21ArchiveFormat {
 			exportConfig = searchParams.getArchiveOptions().getExportFormat();
 		}
 		
-		userManager = CoreSpringFactory.getImpl(UserManager.class);
-		qtiService = CoreSpringFactory.getImpl(QTI21ServiceImpl.class);
-		responseDao = CoreSpringFactory.getImpl(AssessmentResponseDAO.class);
-		testSessionDao = CoreSpringFactory.getImpl(AssessmentTestSessionDAO.class);
-		courseAssessmentService = CoreSpringFactory.getImpl(CourseAssessmentService.class);
-		
 		userPropertyHandlers = userManager.getUserPropertyHandlersFor(QTIArchiver.TEST_USER_PROPERTIES, true);
 		
 		translator = Util.createPackageTranslator(QTI21RuntimeController.class, locale);
@@ -471,11 +475,16 @@ public class QTI21ArchiveFormat {
 			AssessmentTestSession testSession = sessions.get(i);
 			SessionResponses sessionResponses = new SessionResponses(testSession);
 			List<AssessmentResponse> responses = responseDao.getResponses(testSession);
-			
 			for(AssessmentResponse response:responses) {
 				AssessmentItemSession itemSession = response.getAssessmentItemSession();
 				sessionResponses.addResponse(itemSession, response);
 			}
+			
+			List<AssessmentItemSession> itemSessions = itemSessionDao.getAssessmentItemSessions(testSession);
+			for(AssessmentItemSession itemSession:itemSessions) {
+				sessionResponses.addItemSession(itemSession);
+			}
+			
 			writeDataRow(i + 1, sessionResponses, exportSheet, workbook);	
 			DBFactory.getInstance().commitAndCloseSession();
 		}
@@ -726,11 +735,13 @@ public class QTI21ArchiveFormat {
 		
 		public void addResponse(AssessmentItemSession itemSession, AssessmentResponse response) {
 			String itemIdentifier = itemSession.getAssessmentItemIdentifier();
-			if(!itemSessionsMap.containsKey(itemIdentifier)) {
-				itemSessionsMap.put(itemIdentifier, itemSession);
-				responsesMap.put(itemIdentifier, new ArrayList<>(5));
-			}
-			responsesMap.get(itemIdentifier).add(response);	
+			itemSessionsMap.putIfAbsent(itemIdentifier, itemSession);
+			responsesMap.computeIfAbsent(itemIdentifier, id -> new ArrayList<>(5))
+				.add(response);	
+		}
+		
+		public void addItemSession(AssessmentItemSession itemSession) {
+			itemSessionsMap.put(itemSession.getAssessmentItemIdentifier(), itemSession);
 		}
 		
 		public AssessmentItemSession getItemSession(String itemIdentifier) {