Dynamic Data Attachment - parent.csv fails to load

Dear KoboToolbox Support Team,

Greetings! This email is to ask you for your support and guidance.

I am working on a humanitarian project where we need to enable dynamic data attachments so one form (“Child”) can automatically pull previously collected information from another form (“Parent”) using pulldata().

However, despite following all documentation and correctly configuring both forms (data sharing enabled, fields selected, import created, and forms redeployed), the dynamic dataset ( parent.csv ) fails to load, and the Child form shows the following error when opened:

“Failed to load parent.csv.”

I have rebuilt the import several times and verified that the XLSForm structure and field names conform to Kobo’s requirements. The issue persists across deployments.

This feature is mission‑critical: as dynamic data linking would reduce the administrative load and allow them to focus on supporting the children and families on the field.

Could you please advise on:

  1. Whether this issue is related to the dynamic data attachment generator for this project,

  2. Any corrective action I can take to restore proper CSV generation, or

  3. Tools/logs I can use to better diagnose what is failing on the backend?

Thank you for your help, any insight will greatly support our ability to manage this project effectively.

Title: Dynamic Data Attachments / lookup / pulldata / itemsets.csv not populating Child form despite exhaustive setup

Hello KoboToolbox Community Team,

I’m posting here after extensive troubleshooting to seek technical guidance on a persistent issue with linking two Kobo forms.

  1. End goal
    We need to link two Kobo forms such that:
    1.1 A Parent form collects master data (Unique_ID, Name_of_the_child, Age).
    1.2 A Child form dynamically pulls and auto-populates this data at runtime when the same Unique_ID is entered.
    1.3 The linkage must be fully dynamic:
•	No CSV or media uploads
•	No manual file refresh or replacement
•	No technical steps required from field staff

In short: live Parent → Child form linking with automatic population using Kobo-supported functionality.
2. Approaches we have already tried (in detail)

2.1 Dynamic Data Attachments (primary and preferred approach)
2.1.1 Parent form configuration:
• Data sharing enabled
• Fields explicitly selected for sharing (Unique_ID, Name_of_the_child, Age)
• Verified submissions exist and are visible in the Parent form Data tab

2.1.2 Child form configuration:
• Parent imported via Settings → Connect Projects
• Import alias consistently used (e.g., parent_test_form)
• Import refreshed after field selection
• Child form redeployed after every change

2.1.3 XLSForm logic used in Child:
• lookup() functions, for example:
lookup(‘parent_test_form’,‘Name_of_the_child’,‘Unique_ID’, ${Unique_ID})
lookup(‘parent_test_form’,‘Age’,‘Unique_ID’, ${Unique_ID})
• Values stored in calculate fields and displayed via read-only text/integer fields

2.1.4 Result:
• Child form loads without validation errors
• lookup() values remain blank, as if the imported dataset contains zero rows

2.2 CSV + pulldata() approaches (legacy testing)
2.2.1 Exported parent data using CSV and CSV (legacy)
2.2.2 Tested pulldata(), instance(), and xml-external approaches
2.2.3 Uploaded CSV files via Media and synced devices

2.2.4 Result:
• Inconsistent behavior across deployments
• Errors such as “Failed to load parent.csv”
• Requires manual CSV updates whenever parent data changes, which is operationally not viable

2.3 itemsets.csv approach
2.3.1 Generated itemsets.csv from parent data to populate select_one / select_multiple fields
2.3.2 Configured choices sheet to reference itemsets.csv
2.3.3 Uploaded itemsets.csv via Media and redeployed forms

2.3.4 Result:
• Data only updates when itemsets.csv is manually regenerated and reuploaded
• Not dynamic and unsuitable for workflows where parent data changes frequently
• Requires technically skilled intervention, which field staff cannot reliably perform

2.4 Rebuilds and validation checks
2.4.1 Rebuilt both Parent and Child forms from scratch multiple times
2.4.2 Confirmed:
• Exact field-name matches
• Matching data types (text vs integer)
• No duplicate Unique_ID values
• Parent and Child are on the same Kobo server
2.4.3 Tested on:
• Web forms
• KoboCollect after sync

The issue persists across all rebuilds.
3. Observed problem pattern
3.1 Parent data is valid and visible in the Parent form Data tab
3.2 Parent dataset is selectable and importable in the Child form
3.3 Field selection for sharing is confirmed
3.4 Despite this, the Child form behaves as if the imported dataset is empty:

•	lookup() returns blank values
•	No visible runtime or validation errors

3.5 There are no exposed diagnostics indicating:
• Whether the shared dataset is being generated correctly
• Whether rows exist in the imported dataset
• Whether lookup execution is failing silently

4.	What we are seeking help with

4.1 Whether this behavior points to a known issue or limitation with Dynamic Data Attachments
4.2 Whether there are backend logs, dataset status indicators, or debugging tools to verify dataset generation, row counts, or lookup execution
4.3 Any minimal reproducible example or recommended configuration known to work reliably for Parent → Child auto-population without CSV or itemsets.csv uploads

This functionality is mission-critical for our workflow, as it significantly reduces administrative load and field-level errors.
We are happy to share sanitized XLSForms or screenshots if required.

Thank you for your time and support.
Best regards,
Mohammed Saad.

Can you share the XLSForm and the CSV files? Thanks.

1 Like

Hi, I am unable to upload these files. I am getting a pop-up which says I am not allowed to share as I am a new user. Please advise?

Parent form:

Column 1 Column 2 Column 3 Column 4
type name label required
start start
text unique_id Unique ID TRUE
text parent_name Childs full name
decimal parent_age Age of the child in years and months
end end

Child form:

Column 1 Column 2 Column 3 Column 4 E F G
type name label calculation relevant required read_only
start start
text lookup_id Enter Unique ID TRUE
calculate parent_name pulldata(‘parent’,‘parent_name’,‘unique_id’,${lookup_id})
calculate parent_age pulldata(‘parent’,‘parent_age’,‘unique_id’,${lookup_id})
note NamefromParent Name of child: ${parent_name} TRUE
note ShowAge Child’s age: ${parent_age} TRUE
note notfound No record found for ${lookup_id}. If you believe this ID exists, double-check spelling or create a new registration. ${parent_name} = ‘’
end end

And CSV for parent ie. test data entered:

start;“end”;“unique_id”;“parent_name”;“parent_age”;“_id”;“_uuid”;“_submission_time”;“_validation_status”;“_notes”;“_status”;“_submitted_by”;“_version_”;“_tags”;“_index”
2025-12-15T17:53:48.737+05:30;“2025-12-15T17:54:05.049+05:30”;“NH01”;“Rucha”;“2.4”;“630421411”;“133bc98e-1761-421c-89dd-601cb1e346d5”;“2025-12-15T12:24:06”;“validation_status_approved”;“”;“submitted_via_web”;“”;“vHwW87kzxTnYkd99HnFiEq”;“”;“1”
2025-12-15T17:54:05.081+05:30;“2025-12-15T17:54:26.387+05:30”;“NH02”;“Saad Mullaji”;“1.2”;“630421803”;“381c304a-4e9c-4d6e-ba17-4bb5ca60ed90”;“2025-12-15T12:24:27”;“validation_status_approved”;“”;“submitted_via_web”;“”;“vHwW87kzxTnYkd99HnFiEq”;“”;“2”
2025-12-15T17:54:26.410+05:30;“2025-12-15T17:54:45.291+05:30”;“NH03”;“Kalpana Chawla”;“3.2”;“630422178”;“b9c5756e-b970-4534-9a27-20df37e83326”;“2025-12-15T12:24:46”;“validation_status_approved”;“”;“submitted_via_web”;“”;“vHwW87kzxTnYkd99HnFiEq”;“”;“3”
2025-12-15T17:54:45.316+05:30;“2025-12-15T17:55:05.660+05:30”;“NH04”;“Mahesh Bhupati”;“4.7”;“630422517”;“fbb75b4b-4d67-4774-a751-e72a7a9bd1ca”;“2025-12-15T12:25:06”;“validation_status_approved”;“”;“submitted_via_web”;“”;“vHwW87kzxTnYkd99HnFiEq”;“”;“4”

Does this help?

@NewHorizonsCDC, it seems like you may be mixing up two different functions. If you wish to use the pulldata() function, please note that it only works with an external CSV file. However, if you intend to use the dynamic data attachment feature, you can pull information from a parent form into a child form (and in this case, you would not require an external CSV file).

If you are confident that you are using both features correctly, please feel free to share your XLSForm with the community. When sharing it, make sure to include only the relevant variables and not the entire XLSForm. This will make it easier for the community to understand your setup and provide effective support.

@NewHorizonsCDC, you should now be able to upload your XLSForm to the community forum.