Hi Isomorphic,
field "ReportsTo" is null in my test case what is INHO a bug.
SmartClient Version: v12.0p_2019-12-14/PowerEdition Deployment (built 2019-12-14).
employeesUpload.ds.xml
	EmployeesUpload.java
	DSXMLResources-utf8.properties
	
	Best regards
Pavo
					field "ReportsTo" is null in my test case what is INHO a bug.
SmartClient Version: v12.0p_2019-12-14/PowerEdition Deployment (built 2019-12-14).
employeesUpload.ds.xml
Code:
	
	<DataSource xmlns="lmscompany/ds" xmlns:fmt="lmscompany/fmt" ID="employeesUpload" serverType="sql" tableName="employeeTable" recordName="employee" useAnsiJoins="true">
<fmt:bundle basename="com.smartgwt.sample.server.listener.DSXMLResources-utf8" encoding="utf-8" />
    <fields>
        <field name="EmployeeId" title="Employee ID" type="integer" primaryKey="true" required="true"/>
        <field name="Name" uploadFieldName="Name" title="Name" type="text" length="128">
            <validators>
                <validator type="isUnique" caseSensitive="true" />
            </validators>
        </field>
        <field name="ReportsTo" displayField="ReportsToName" uploadFieldName="CustomReportsTo" required="true" importStrategy="display"
            foreignKey="employees.EmployeeId" relatedTableAlias="relatedReportsTo">
            <title><fmt:message key="ReportsTo" /></title>
            <validators>
                <validator type="hasRelatedRecord" errorMessage="Unknown ReportsTo" />
            </validators>
        </field>
        <field name="ReportsToName" includeFrom="employees.Name" includeVia="ReportsTo" />
        <field name="Job" uploadFieldName="Job" title="Title" type="text" length="128">
            <validators>
                <validator type="isOneOf" />
            </validators>
            <valueMap>
                <value>Developer</value>
                <value>IT-Infrastructure</value>
                <value>Other</value>
            </valueMap>
        </field>
        <field name="Gender" uploadFieldName="Gender" title="Gender" type="text" length="7">
            <validators>
                <validator type="isOneOf" />
            </validators>
            <valueMap>
                <value>male</value>
                <value>female</value>
            </valueMap>
        </field>
        <field name="Salary" uploadFieldName="Salary" title="Salary" type="integer">
        </field>
    </fields>
    <serverObject lookupStyle="new" className="com.smartgwt.sample.server.listener.EmployeesUpload" />
    <operationBindings>
        <operationBinding operationType="custom" operationId="upload" serverMethod="upload" />
    </operationBindings>
</DataSource>
Code:
	
	package com.smartgwt.sample.server.listener;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.isomorphic.datasource.DSRequest;
import com.isomorphic.datasource.DSResponse;
import com.isomorphic.tools.DataImport;
public class EmployeesUpload {
    public DSResponse upload(DSRequest dsRequest, HttpServletRequest servletRequest) throws Exception {
        @SuppressWarnings("unchecked")
        Map<String, Object> requestValues = dsRequest.getValues();
        Map<String, String> columnRemap = new HashMap<>();
        columnRemap.put("EmployeeId", "EmployeeId");
        columnRemap.put("Name", "Name");
        columnRemap.put("CustomReportsTo", "ReportsTo");
        columnRemap.put("ReportsToName", "ReportsToName");
        columnRemap.put("Job", "Job");
        columnRemap.put("Gender", "Gender");
        columnRemap.put("Salary", "Salary");
        DataImport dataImporter = new DataImport();
        dataImporter.setPopulateDisplayFields(true);
        Map<String, Object> importedFields = dataImporter.importDataSourceRecord(requestValues, columnRemap, "employeesUpload");
        if (importedFields.get("ReportsTo") != null)
            return new DSResponse(dsRequest.getDataSource()).setSuccess();
        else
            return new DSResponse(dsRequest.getDataSource()).setFailure("ReportsTo is null!");
    }
}
Code:
	
	ReportsTo = MyManager
Code:
	
	POST to http://127.0.0.1:8888/builtinds/sc/RESTHandler
Body:
<request>
    <dataSource>employeesUpload</dataSource>
    <operationType>custom</operationType>
    <operationId>upload</operationId>
    <data>
        <EmployeeId>100001</EmployeeId>
          <Name>New colleague</Name>
        <CustomReportsTo>Charles Madigen</CustomReportsTo>
        <Job>Developer</Job>
        <Gender>male</Gender>
        <Salary>12345</Salary>
      </data>
  </request>
Pavo
Comment