Lookup field is rendered incorrectly by server and architect

A lookup field is rendered without the “lookup” part in the name of the field.

Data structure > Filter > Actions > Show SQL

Server log

2021-10-15 11:14:40,685 [10] ERROR Origam.DA.Service.DataLoader - The multi-part identifier "CustomerGroup.Name" could not be bound., SQL: SELECT  [DataTransPayment].[DataTransReturnLocation] AS [DataTransReturnLocation], [DataTransPayment].[RecordUpdated] AS [RecordUpdated], [DataTransPayment].[RecordCreated] AS [RecordCreated], [DataTransPayment].[Id] AS [Id], [DataTransPayment].[RecordUpdatedBy] AS [RecordUpdatedBy], [DataTransPayment].[RecordCreatedBy] AS [RecordCreatedBy], [DataTransPayment].[Amount] AS [Amount], [DataTransPayment].[refCreditedDataTransPaymentId] AS [refCreditedDataTransPaymentId], [DataTransPayment].[Currency] AS [Currency], [DataTransPayment].[UPPTransactionId] AS [UPPTransactionId], [DataTransPayment].[refDataTransPaymentStatusId] AS [refDataTransPaymentStatusId], [DataTransPayment].[MerchantId] AS [MerchantId], [DataTransPayment].[Refno] AS [Refno], [DataTransPayment].[AuthorizationErrorCode] AS [AuthorizationErrorCode], ([DataTransPayment].[Amount] / 100) AS [AmountCurrency], [DataTransPayment].[refTargetRentalTransactionStatusId] AS [refTargetRentalTransactionStatusId], [DataTransPayment].[CommissionAmount] AS [CommissionAmount], ([DataTransPayment].[CommissionAmount] / 100) AS [CommisionAmountCurrency], [DataTransPayment].[LessorBusinessUnitId] AS [LessorBusinessUnitId], (SELECT TOP 1 [CustomerGroup].[Name] AS [Name] FROM [DataTransPaymentRentalTransaction] AS [lookupDataTransPaymentRentalTransaction] INNER JOIN [RentalTransaction] AS [lookupRentalTransaction] ON [lookupDataTransPaymentRentalTransaction].[refRentalTransactionId] = [lookupRentalTransaction].[Id] INNER JOIN [OrganizationBusinessPartner] AS [lookupCustomerOrganizationBusinessPartner] ON [lookupRentalTransaction].[refCustomerOrganizationBusinessPartnerId] = [lookupCustomerOrganizationBusinessPartner].[Id] INNER JOIN [CustomerGroupMember] AS [lookupCustomerGroupMember] ON [lookupCustomerOrganizationBusinessPartner].[Id] = [lookupCustomerGroupMember].[refOrganizationBusinessPartnerId] INNER JOIN [CustomerGroup] AS [lookupCustomerGroup] ON [lookupCustomerGroupMember].[refCustomerGroupId] = [lookupCustomerGroup].[Id] WHERE  (  ([lookupDataTransPaymentRentalTransaction].[refDataTransPaymentId] = [DataTransPayment].[Id])) ) AS [FirstCustomerGroup], (SELECT COUNT_BIG([aggregation1].[Amount]) FROM [DataTransPaymentRentalTransaction] AS [aggregation1]  WHERE [DataTransPayment].[Id] = [aggregation1].[refDataTransPaymentId]) AS [RentalTransactionCount] FROM [DataTransPayment] AS [DataTransPayment]  WHERE ( [DataTransPayment].[Id] IN (SELECT ListValue FROM @Id origamListValue))
System.Data.SqlClient.SqlException (0x80131904): The multi-part identifier "CustomerGroup.Name" could not be bound.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
   at Origam.DA.Service.DataLoader.Fill() in D:\a\1\s\origam-source\Origam.DA.Service\AbstractSqlDataService.cs:line 118
ClientConnectionId:dde12761-7bca-46d2-aab4-19138f7dd4ad
Error Number:4104,State:1,Class:16

Formatted SQL from log

SELECT TOP 1 [CustomerGroup].[Name] AS [Name]
FROM [DataTransPaymentRentalTransaction] AS [lookupDataTransPaymentRentalTransaction]
INNER JOIN [RentalTransaction] AS [lookupRentalTransaction] ON [lookupDataTransPaymentRentalTransaction].[refRentalTransactionId] = [lookupRentalTransaction].[Id]
INNER JOIN [OrganizationBusinessPartner] AS [lookupCustomerOrganizationBusinessPartner] ON [lookupRentalTransaction].[refCustomerOrganizationBusinessPartnerId] = [lookupCustomerOrganizationBusinessPartner].[Id]
INNER JOIN [CustomerGroupMember] AS [lookupCustomerGroupMember] ON [lookupCustomerOrganizationBusinessPartner].[Id] = [lookupCustomerGroupMember].[refOrganizationBusinessPartnerId]
INNER JOIN [CustomerGroup] AS [lookupCustomerGroup] ON [lookupCustomerGroupMember].[refCustomerGroupId] = [lookupCustomerGroup].[Id]
WHERE (([lookupDataTransPaymentRentalTransaction].[refDataTransPaymentId] = [DataTransPayment].[Id]))
) AS [FirstCustomerGroup]
	

We’ve decided that the programmatic solution is too complicated and involves too much effort and too many risks. The issue can be solved by adjusting model.

See Limits on SQL generation of lookup fields.