Data Quality Considerations
While Edlink does a great job of normalizing data from dozens of different educational systems, we cannot guarantee that the data we receive from a school's source system is always complete, accurate, or consistent. Building a resilient integration requires anticipating and handling these potential data quality issues.
Below are some of the most common issues to be aware of when planning your integration, along with solutions Edlink provides to mitigate them.
Missing Data Types & Fields
The most frequent issue you will encounter is missing data. This often occurs because a certain type of system (like an LMS) is not the authoritative source for that information. It's important to note that the Edlink data model itself does not change - you'll simply receive null values for fields that are not populated.
Most Common Missing Fields:
- Global Roles: Many LMS platforms do not have a concept of a global "role" for a user. Instead, a person has a contextual role within a specific class (e.g., "teacher" in one class, "student" in another). The top-level rolesarray on aPersonobject may be empty when connecting to an LMS.
- Demographics: LMS platforms rarely store demographic details for users. Fields like birthday, gender, and race will typically be null.
- Course Metadata: Grade levels and subjects for courses are often not reliably populated in an LMS.
- Dates: Start and end dates for sessions and classes can be unreliable or missing entirely in many systems.
- Extended Rostering: Richer data models like attendance, incidents, departments, and facilities are primarily available through SIS connections, not LMS connections.
- Advanced Coursework: Features like files, rubrics, modules, and pages are only available for certain modern LMS platforms.
How We Ingest Data
To provide a consistent data model, Edlink sometimes has to make structural decisions about how data is ingested. For example, in systems like Canvas and Schoology, teachers can "cross-list" or "link" multiple sections into a single course shell. Edlink ingests each of these original sections as a distinct Class object. This is important to understand when, for instance, creating assignments for what a teacher might perceive as a single course.
Unavailable Functionality
Not all features are supported by all providers. For example, some LMS platforms do not support the full submission lifecycle (e.g., reclaiming or returning a submission). Your application should be built defensively. When you attempt an action that a provider does not support, the Edlink API will return an 501 Not Implemented error. You should handle this gracefully, often by treating the operation as successful and continuing your workflow.
You can see a pretty comprehensive list of which data types are supported by each provider in their respective documentation pages (via the Providers tab in the navigation bar above).
Pagination Differences
Underlying provider APIs have different methods for handling pagination. Edlink normalizes this by providing a $next cursor in the response body of any paginated request. We strongly recommend using this $next URL to fetch the subsequent page of results. This ensures your code will work consistently across all providers without needing to handle provider-specific logic.
Solutions for Data Quality Issues
Edlink provides several tools to help you manage and improve the quality of the data you receive.
- Limiting Data Sources: If your application relies heavily on functionality specific to certain systems (e.g., rubrics in Canvas), you can configure your Edlink Application in the dashboard to only allow connections from those providers.
- Data Transformations: You can apply transformations to clean up or fill in data. For the common issue of missing global roles, you can use the pre-built Infer Roles transformation, which populates the Person.rolesarray based on a user's enrollments. For more complex needs, you can write Custom Transformations using JavaScript/TypeScript.
- Data Enrichment: This is the most powerful solution for missing data. By having a school connect a secondary data source (typically their SIS), you can enrich the primary (LMS) data. This allows you to pull in authoritative data like demographics, reliable grade levels, and global user roles, creating a complete and accurate dataset for your application.
