What does the `Cannot project Contract` error mean in the Navigator log?

In my current project, I can see a lot of error messages like this, otherwise, the contract package seems to work as expected.

12:55:36.810 [da-ui-backend-akka.actor.default-dispatcher-5] ERROR c.d.navigator.query.ContractSorter - Cannot project Contract(00fabbdb0943c341c9da65dee9fbc3a166b3aa170623a02bc1c27f92e70cfdd4a8,Template(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Main:PendingProcess,List(Choice(TerminateProcess,TypeCon(TypeConName(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Main:TerminateProcess),ImmArray.ImmArraySeq()),TypePrim(PrimTypeContractId,ImmArray.ImmArraySeq(TypeCon(TypeConName(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Main:TerminatedProcess),ImmArray.ImmArraySeq()))),false), Choice(QuerySnapshotAndHistory,TypeCon(TypeConName(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Main:QuerySnapshotAndHistory),ImmArray.ImmArraySeq()),TypeCon(TypeConName(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:SnapshotAndHistory),ImmArray.ImmArraySeq()),false), Choice(Summarize,TypeCon(TypeConName(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Main:Summarize),ImmArray.ImmArraySeq()),TypePrim(PrimTypeContractId,ImmArray.ImmArraySeq(TypeCon(TypeConName(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Main:PendingProcess),ImmArray.ImmArraySeq()))),true), Choice(Archive,TypeCon(TypeConName(d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662:DA.Internal.Template:Archive),ImmArray.ImmArraySeq()),TypePrim(PrimTypeUnit,ImmArray.ImmArraySeq()),true), Choice(KillProcessForTimeOut,TypeCon(TypeConName(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Main:KillProcessForTimeOut),ImmArray.ImmArraySeq()),TypePrim(PrimTypeContractId,ImmArray.ImmArraySeq(TypeCon(TypeConName(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Main:ProcessExeededTimeout),ImmArray.ImmArraySeq()))),false)),Some(TypeCon(TypeConName(40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7:DA.Types:Tuple2),ImmArray.ImmArraySeq(TypePrim(PrimTypeParty,ImmArray.ImmArraySeq()), TypePrim(PrimTypeText,ImmArray.ImmArraySeq()))))),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Main:PendingProcess),ImmArray((Some(networkAdmin),ValueParty(NetworkAdmin)),(Some(processAdmin),ValueParty(ProcessAdmin)),(Some(personId),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:PersonId),ImmArray((Some(processId),ValueText(efgh)),(Some(decadeOfBirth),ValueInt64(1990))))),(Some(inputs),ValueList(FrontStack(ValueVariant(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:Input),MedicalFitnessInput,ValueVariant(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:MedicalFitness),MedicalFitnessInputSubmission,ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:MedicalFitness.MedicalFitnessInputSubmission),ImmArray((Some(fitness),ValueVariant(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:Fitness),Fit,ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:Fitness.Fit),ImmArray((Some(expiry),ValueTimestamp(2030-04-28T12:00:00Z)))))),(Some(orderingDateTime),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:OrderingDateTime),ImmArray((Some(officialDate),ValueDate(2020-04-28)),(Some(arrivalTime),ValueTimestamp(2020-04-28T12:00:00Z))))))))),ValueVariant(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:Input),DrivingPracticeTestInput,ValueVariant(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:DrivingPracticeTest),DrivingPracticeTestInputSubmission,ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:DrivingPracticeTest.DrivingPracticeTestInputSubmission),ImmArray((Some(orderingDateTime),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:OrderingDateTime),ImmArray((Some(officialDate),ValueDate(2020-04-28)),(Some(arrivalTime),ValueTimestamp(2020-04-28T12:00:00Z))))))))),ValueVariant(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:Input),FirstAidTestInput,ValueVariant(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:FirstAidTest),FirstAidTestInputSubmission,ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:FirstAidTest.FirstAidTestInputSubmission),ImmArray((Some(orderingDateTime),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:OrderingDateTime),ImmArray((Some(officialDate),ValueDate(2020-04-28)),(Some(arrivalTime),ValueTimestamp(2020-04-28T12:00:00Z))))))))),ValueVariant(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:Input),DeclarationInput,ValueVariant(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:Declaration),DeclarationInputSubmission,ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:Declaration.DeclarationInputSubmission),ImmArray((Some(fieldA),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:FieldA),ImmArray((Some(answer),ValueBool(true)),(Some(text_version),ValueInt64(1)),(Some(to_be_evaluated),ValueBool(true))))),(Some(fieldB),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:FieldB),ImmArray((Some(answer),ValueBool(true)),(Some(text_version),ValueInt64(1)),(Some(to_be_evaluated),ValueBool(true))))),(Some(fieldC),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:FieldC),ImmArray((Some(answer),ValueBool(true)),(Some(text_version),ValueInt64(1)),(Some(to_be_evaluated),ValueBool(true))))),(Some(fieldD),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:FieldD),ImmArray((Some(answer),ValueBool(true)),(Some(text_version),ValueInt64(1)),(Some(to_be_evaluated),ValueBool(true))))),(Some(fieldE),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:FieldE),ImmArray((Some(answer),ValueBool(true)),(Some(text_version),ValueInt64(1)),(Some(to_be_evaluated),ValueBool(true))))),(Some(fieldF),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:FieldF),ImmArray((Some(answer),ValueBool(true)),(Some(text_version),ValueInt64(1)),(Some(to_be_evaluated),ValueBool(true))))),(Some(orderingDateTime),ValueRecord(Some(512642fa6a909ea1511eeb152329836a588bbb0e85672678bfc23ff1ed56d3ad:Utilities:OrderingDateTime),ImmArray((Some(officialDate),ValueDate(2020-04-28)),(Some(arrivalTime),ValueTimestamp(2020-04-28T12:00:00Z)))))))))))),(Some(drivingOk),ValueBool(true)),(Some(printingOk),ValueBool(false)))),Some(),List(NetworkAdmin, ProcessAdmin),List(),Some(ValueRecord(Some(40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7:DA.Types:Tuple2),ImmArray((Some(_1),ValueParty(ProcessAdmin)),(Some(_2),ValueText(efgh)))))) with criterion SortCriterion(processId,ASCENDING): UnknownProperty(contract,[processId],). Using None. 
1 Like
Cannot project ... UnknownProperty(contract,[processId],).

Looks like Navigator wants to sort by processId but the property cannot be found. Does your template have a processId field?

2 Likes

Yes, will check the frontend-config.js, where the sorting is defined, I have made changes, may be that I didn’t change everywhere, thank you!

1 Like

@stefanobaghino-da I’m afraid I don’t understand what sort/field and the columns/key exactly mean in the frontend-config.js, that’s why this mismatch happens.

export const customViews = (userId, party, role) => ({
  customview1: {
    type: "table-view",
    title: "Filtered contracts",
    source: {
      type: "contracts",
      filter: [
        {
          field: "id",
          value: "1",
        }
      ],
      search: "",
      sort: [
        {
          field: "id",
          direction: "ASCENDING"
        }
      ]
    },
    columns: [
      {
        key: "id",
        title: "Contract ID",
        createCell: ({rowData}) => ({
          type: "text",
          value: rowData.id
        }),
        sortable: true,
        width: 80,
        weight: 0,
        alignment: "left"
      },

I may be wrong (I’m not extremely familiar with the internals of Navigator), but that file is probably built using the the package service. Does restarting Navigator help?

EDIT: this was a wild guess, I don’t think it’ll actually work.

I had a better look at the docs. This configuration file is mentioned here.

Do you need the custom view to be there in the first place? If not, you can probably simply remove the frontend-config.js file.

1 Like

Yes, I need custom views. I open another issue more specifically for this question, thank you for your help so far!