function extractSamplesFromDocuIndex(oChainObject) {
		// If we have not extracted docuPath we return early
		if (!oChainObject.docuPath) {
			return oChainObject;
		}
		return new Promise(function(oResolve) {
			// Join .library path with relative docuindex.json path
			let sPath = path.join(path.dirname(oChainObject.libraryFile), oChainObject.docuPath);
			// Normalize path to resolve relative path
			sPath = path.normalize(sPath);

			const {sources} = options;
			let {librarySrcDir, libraryTestDir} = options;

			if (Array.isArray(sources) && typeof librarySrcDir === "string" && typeof libraryTestDir === "string") {

				// Using path.join to normalize POSIX paths to Windows paths on Windows
				librarySrcDir = path.join(librarySrcDir);
				libraryTestDir = path.join(libraryTestDir);

				/**
				 * Calculate prefix to check
				 *
				 * Example 1:
				 * - sSource: /path/to/project/src
				 * - sLibrarySrcDir: src
				 *
				 * Prefix: /path/to/project/test-resources
				 *
				 * Example 2:
				 * - sSource: /path/to/project/src/main/js
				 * - sLibrarySrcDir: src/main/js
				 *
				 * Prefix: /path/to/project/src/main/test-resources
				 */
				const librarySrcDirWithTestResources = replaceLastPathSegment(librarySrcDir, "test-resources");

				for (const sourcePath of sources) {
					/**
					 * Replace prefix with file system path
					 *
					 * Example 1:
					 * - sPath: /path/to/project/test-resources/sap/test/demokit/docuindex.json
					 *
					 * New sPath: /path/to/project/test/sap/test/demokit/docuindex.json
					 *
					 * Example 2:
					 * - sPath: /path/to/project/src/main/test-resources/sap/test/demokit/docuindex.json
					 *
					 * New sPath: /path/to/project/src/main/test/sap/test/demokit/docuindex.json
					 */
					if (!sourcePath.endsWith(librarySrcDir)) {
						continue;
					}
					const libraryDir = sourcePath.substring(0, sourcePath.lastIndexOf(librarySrcDir) - 1);
					const prefix = path.join(libraryDir, librarySrcDirWithTestResources);
					if (sPath.startsWith(prefix)) {
						sPath = path.join(libraryDir, libraryTestDir, sPath.substring(prefix.length));
						break;
					}
				}
			}

			fs.readFile(sPath, 'utf8', (oError, oFileData) => {
				if (!oError) {
					oFileData = JSON.parse(oFileData);
					if (oFileData.explored && oFileData.explored.entities && oFileData.explored.entities.length > 0) {
						oChainObject.entitiesWithSamples = [];
						oFileData.explored.entities.forEach((oEntity) => {
							oChainObject.entitiesWithSamples.push(oEntity.id);
						});
					}
				}
				// We always resolve as this data is not mandatory
				oResolve(oChainObject);
			});

		});
	}
Adds to the passed object array with entities which have explored samples
@param {object} oChainObject chain object
@returns {object} chain object