@rowname not working in 5.19 (build 16084)

This is in continuation with the problem stated by Nilanjana Roy in the Subject “Internal server error occurred. Please contact with customer support of Survey Solutions.”

Thank you very much for modifying the Designer portal and now the Templates are imported in our server (https://mospi-capi.gov.in) after resolving the errors in the Templates, which were not shown earlier.

But @rowname used in the function having expression as below shows “obsolete,don’t use it” in place of the roster title (or roster name), name of the person (where variable roster was used).

( @rowindex + 1) + “. " + @rowname + " - " + " - " + new[]{”",“male”,“female”}[Convert.ToInt32(sex1.Value)] + " - " + (IsAnswered(age1) ? age1.ToString() : “0”) + " - " + (IsAnswered(marst1) ? new[]{"",“never married”,“currently married”,“widowed”,“divorced”}[ Convert.ToInt32(marst1.Value)] : “never married”) + " - " + new[]{"",“head of household” , “spouse of head” , “married child” , “spouse of married child” , “unmarried child” , “grandchild” , “father/mother/father-in-law/mother-in-law” , “brother/sister” , “others” }[ Convert.ToInt32(rel1.Value)] + " - " + (IsAnswered(gedu_lev1) ? new[]{"",“not literate” , “literate:EGS/NFEC/AEC” , “literate:TLC” , “literate: others” , “below primary” , “primary” , “middle” , “secondary” , “higher secondary” , “diploma/certificate” , “graduate” , “postgraduate or above”}[ Convert.ToInt32(gedu_lev1.Value)] : “not literate”)

But for the fixed roster, similar expression is working, where only @rowindex function is used.

The same Template is working as expected in Tester app.

Dear Soumendra, Nilanjana,

  1. at the moment (I am testing only with the currently released version v5.25) both Tester and Interviewer Apps produce the same result with both the functional way of obtaining the name and with the @rowname shortcut:

  2. yes, the strategic decision is to not use the @rowname. We will eventually disable it. But the question is really bigger than that. It is not entirely obvious whether the names should even be at all accessible from the questionnaire logic/available in the syntax. If there are practical situations when conditions operating on names like PersonName==“John” are necessary, please give examples. I am all for the logic of the questionnaire to work completely anonymously, without consideration to whom it is being applied.

  3. Going back to the original expression posted by Nilanjana Roy, the complexity of it goes beyond the intended use and has adverse effects:
    a) will degrade the performance of the questionnaire;
    b) decrease readability, and cloud out the logic;
    c) complicate the testing;
    d) definitely is not compatible with translation/multilingual questionnaires.

Could you please explain what you are gaining through this, which outweighs these costs?

Thank you, Sergiy Radyakin

As suggested in the earlier thread, using the following expression in place of @rowname is giving the desired result


But using @rowname still shows “obsolete,don’t use it” in place of the name of the household members.