code: @PostMapping("/firstattributemapping")
    @ResponseBody
    public FirstAttributeMappingInfo getFirstAttributeMappingInfo(
        @RequestParam() String mappingProjectId,
        @RequestParam() String target,
        @RequestParam(value = "skipAlgorithmStates[]") List<AlgorithmState> skipAlgorithmStates,
        Model model) {
      MappingProject mappingProject = mappingService.getMappingProject(mappingProjectId);
      MappingTarget mappingTarget = mappingProject.getMappingTarget(target);
      List<String> sourceNames =
          mappingTarget
              .getEntityMappings()
              .stream()
              .map(i -> i.getSourceEntityType().getId())
              .collect(toList());
  
      EntityType targetEntityMeta = mappingTarget.getTarget();
      for (Attribute attribute : targetEntityMeta.getAtomicAttributes()) {
        if (attribute.equals(targetEntityMeta.getIdAttribute())) {
          continue;
        }
  
        for (String source : sourceNames) {
          EntityMapping entityMapping = mappingTarget.getMappingForSource(source);
          AttributeMapping attributeMapping = entityMapping.getAttributeMapping(attribute.getName());
  
          if (null != attributeMapping) {
            AlgorithmState algorithmState = attributeMapping.getAlgorithmState();
            if (null != skipAlgorithmStates && skipAlgorithmStates.contains(algorithmState)) {
              continue;
            }
          }
  
          return FirstAttributeMappingInfo.create(
              mappingProjectId, target, source, attribute.getName());
        }
      }
  
      return null;
    }
docs: Find the firstattributeMapping skip the the algorithmStates that are given in the {@link
  AttributeMapping} to an {@link EntityMapping}.
  
  @param mappingProjectId ID of the mapping project
  @param target name of the target entity
  @param skipAlgorithmStates the mapping algorithm states that should skip