Below are some Best Practices while implementing CSV files in OneRoster

FilesField
Issue
Rationale
users.csvgradesThe student grade level should be included, despite the fact that in OneRoster v1.1 it is listed as optional.
Many publishers require this, especially in order to auto provision content
users.csvusername

Username should match Active Directory user name if you are authenticating via AD or ADFS.

If using Google then username should match google username

That field connects the user’s username for an SSO environment to the rostering environment.

*This can be problematic when some systems require a username unique in their system
orgs.csv
identifier

US Schools Only

Include each school’s NCES ID found at https://nces.ed.gov/datatools/
This assigns a unique ID for each school in your district, which is unique across the country. Eventually, publishers can use this ID instead of publisher-assigned identifiers in their disparate systems
courses.csv
sourceId
This identifier should list each course taught, one time only.  For example, Algebra I should only appear once in this file.  
It is best to use an identifier that is a state course number or District course number, that does not vary school to school.  It should be without qualifiers.  This makes the assignment of resources very simple.  Listing each class as a separate course is confusing and generates unnecessary data and effort.
courses.csv
orgSourceId
If the same course with the same standards are taught across the district, set the orgSourceId to the district
Rather than the same course showing up for each org unit, this allows that the same course is taught system-wide
classes.csv
sourceId
Each class must have a unique id, but must NOT contain data that includes room number, grade level, teacher number, or any other variable subject to change that will change the sourceId
For example: If the sourceId contains a teacher identifier, and the teacher changes, moves, transfers, quits, or whatever, the class identifier changes, and all data is lost, and the class is recreated.  No part of the sourceId should contain a variable subject to change. In secondary schools, creating a sourceId containing a grade level will generate multiple classes in a multi-grade environment .  For example, Geometry may contain 9th, 10th, and 11th graders. Including the grade level in the sourceId will generate 3 separate classes.
classes.csv
classType
Must follow specification
manifest.csv
All fields
If you open the file in Excel vs. CSV or TXT, leading zeroes are dropped, and the manifest version which must be set to 1.0 is converted to 1
This messes up the entire file
All csv
status
Only used for Delta
Must be set to blank for bulk upload
All csv
dateLastModified
Only used for Delta
Must be set to blank for bulk upload
academicsessions.csv
type
Case SensitiveFiles are rejected if improperly formatted
demographics.csv
sex
Must follow specification
demographics.csv
all race fieldstrue or false must be lower case
Only acceptable values
demographics.csv
countryOfBirthCode
Must adhere to CEDS:Two Character upper case
https://ceds.ed.gov/CEDSElementDetails.aspx?TermxTopicId=20002
demographics.csv
stateOfBirthAbbreviation
Must adhere to CEDS:Two Character upper case
https://ceds.ed.gov/CEDSElementDetails.aspx?TermxTopicId=20837
enrollments.csv
beginDate
Not required in spec, but should included
Required by some curriculum providers
enrollments.csv
endDate
Not required in spec, but should included
Required by some curriculum providers