code: function (fnCallbackAsyncL2) {
                      aArtifactsLocal.forEach(function (oItemLocal) {
                          var bFound = false;
  
                          aArtifactsServer.forEach(function (oItemServer) {
                              if (oItemLocal.type === oItemServer.type && oItemLocal.id === oItemServer.id) {
                                  bFound = true;
                                  aArtifactsSync.push({
                                      type: oItemLocal.type,
                                      id: oItemLocal.id,
                                      modif: util.MODIDF.update
                                  });
                              }
                          });
  
                          if (bFound === false) {
                              aArtifactsSync.push({
                                  type: oItemLocal.type,
                                  id: oItemLocal.id,
                                  modif: util.MODIDF.create
                              });
                          }
                      });
  
                      aArtifactsServer.forEach(function (oItemServer) {
                          var bFound = false;
  
                          aArtifactsLocal.forEach(function (oItemLocal) {
                              if (oItemLocal.type === oItemServer.type && oItemLocal.id === oItemServer.id) {
                                  bFound = true;
                              }
                          });
  
                          if (bFound === false) {
                              aArtifactsSync.push({
                                  type: oItemServer.type,
                                  id: oItemServer.id,
                                  modif: util.MODIDF.delete
                              });
                          }
                      });
  
                      fnCallbackAsyncL2(null, null);
                  }
docs: L2, step 2: compare against resolved artifacts