ну например есть базовый класс, он лежит в базовой jar. Эта jar собирается 1 раз и подключается к SAP. (Это ядро)
Вся реализация по трансформации из буфера в DOM и обратно находится в SAPMappingCustom.
Code:
public class SAPTransformationCustom extends AbstractTransformation implements ILogger{
    protected SAPMappingCustom sap = new SAPMappingCustom();
    private TransformationInput tr_in;
    private boolean isRunSAP;
    
    public SAPTransformationCustom(){
        isRunSAP = false;
        sap.setLogger(this);
    }
    
    protected String getDynamicConfiguration(String aNameSpace, String aName) {
        return (tr_in != null) ? tr_in.getDynamicConfiguration().get(DynamicConfigurationKey.create(aNameSpace, aName)) : "";
    }
    
    @Override
    public void transform(TransformationInput ti, TransformationOutput to) throws StreamTransformationException {
        isRunSAP = true;
        tr_in = ti;
        sap.transform(ti.getInputPayload().getInputStream(), to.getOutputPayload().getOutputStream());
    }
    
    @Override
    public void showMessage(String aMessage) {
        if (isRunSAP) {
            this.getTrace().addInfo(aMessage);
        }
        else {
            System.out.println(aMessage);
        }
    }
    @Override
    public void errorMessage(String aMessage) {
        showMessage(aMessage);
        throw new RuntimeException(aMessage);
    }
    
}
Затем любой разработчик, который будет создавать Java-маппинг, чтобы не писал фактически то, что лежит в SAPMappingCustom делает следующее:
Создает новый jar (который и будет указываться в Operation Mapping) и наследуется от SAPTransformationCustom
Code:
public class SAPMappingOrderCSVToJDBC extends SAPTransformationCustom implements ISAPMapping{
    public static void main(String[] args) {
        SAPMappingOrderCSVToJDBC mjm = new SAPMappingOrderCSVToJDBC();
        try {
            //Определяем откуда считывается xml и куда записывается xml
            FileInputStream in = new FileInputStream("C:/In.xml");
            FileOutputStream out = new FileOutputStream("C:/Out.xml");
            //Вызываем парсер xml
            mjm.sap.transform(in, out);
        } catch (Exception ex) {
            throw new RuntimeException(ex.getMessage());
        }
    }
    public SAPMappingOrderCSVToJDBC(){
        super();
        sap.setSAPMapping(this);
    }
    
    @Override
    public void createXML(Document aIn, Document aOut) {
       //тут преобразование из aIn в aOut
    }
    @Override
    public String getXSD() {
        return "тут лежит XSD по которой ядро будет проверять корректность XML в aIn";
    }
}
В этом случае разработчик должен реализовать только 2 метода. Выполнить преобразование в createXML и указать XSD схему. Больше ничего реализовывать не надо.
Затем эта jar подключается и выбирается в Operation Mapping