Best Of
Re: Brightspace Portfolio Categories Question
Hi there,
Thank you for the detailed description of your setup, this is a great question that comes up when institutions are refining their Portfolio workflow before a semester launch.
What you're experiencing is a known behavior in Brightspace Portfolio. Categories that were previously assigned to artifacts (even during testing) can persist in the system as retained/retired category references, even after the original artifacts, test students, and categories themselves have been removed from Category Management. This is by design to preserve data integrity for any evidence that was ever tagged, but it can cause confusion when the old category names are still surfaced to students.
A few things to check and try:
1. Confirm whether these are "retired" categories
Categories that were once used and then deleted from Category Management are not fully purged; they are effectively retired but still stored in the Portfolio data layer. Students may still see them as selectable options because their association to the org hasn't been fully cleared.
2. Verify at the org/course level
Check whether these orphaned categories appear at the school/org level or the class/course level. School-level categories are managed by Board/Org admins under Category Management, while class-level categories are set by instructors. If any test categories were created at a different org level than expected, they may not be visible in your current Category Management view but still appear to students.
3. Recommended Path Forward: Contact D2L Support
Because these categories appear to be retained at the database level (not surfaced in the UI for deletion), the most reliable resolution before your semester starts is to open a support case with D2L. Provide:
- The names of the orphaned categories students are seeing
- Confirmation that they no longer appear in Category Management
- The org/course context where they appear
D2L Support can investigate whether these are cached, retired, or orphaned category records and initiate a cleanup on your behalf.
4. Interim workaround
If time is critical, consider providing students with clear written instructions on which categories to select, and remind instructors to filter only by the new category names when reviewing submissions. This won't resolve the root cause but will minimize confusion while a support case is being processed.
Given your semester begins next week, I'd recommend opening that support case as soon as possible and flagging it as time-sensitive. You can reach D2L Support at https://community.d2l.com/brightspace/s/.
Hope this helps get you sorted before launch! 🎓
Re: Portfolio and Assignments
Hi @Elaine.C.420,
Thank you for reaching out through the Community!!
Based on the "Add Own Assignment to Portfolio" setting, you should see the "Add to Portfolio" button on the student's View Feedback page or Submission Details page. If I understand correctly, you may be checking the Unevaluated Submissions page.
Please note that this option typically becomes available only after the assignment submission has been evaluated.
I hope this helps clarify the behaviour you are seeing. If you continue to experience issues or have any additional questions, please let us know, and we will be happy to assist further.
Thanks,
Sangeetha
Sangeetha.T.629
Re: Dynamic question creation in Brightspace
Hi Brittanuy. I believe there are two options your math instructors can explore:
- MyOpenMath via LTI — Rather than importing the course file, set up MyOpenMath as an LTI 1.3 tool in Brightspace (Admin Tools > External Learning Tools). This way MyOpenMath handles the dynamic question generation and passes grades back to Brightspace automatically. Some help setting this up can be found here: https://www.myopenmath.com/help.php?section=lti#ltid2l
- Brightspace's built-in Arithmetic question type. This seems to do what your instructors want natively. They can create a question like "What is {x} + {y}?" and define variable ranges so each student gets different numbers without needing a 3rd-party tool needed. It's found under Quizzes > Question Library > New Question > Arithmetic.
It might be worth trying the Arithmetic question type first since it requires no setup and it's available from the get go.
Hope that helps.
Best regards, Gabriel
Gabriel.T.493
Has anyone used an API to manage Special Access?
We are looking for a way to bulk edit/update Special Access for Assignments so that admins do not have to manually add these to every individual assignment.
We are looking for a way to automate special access for our students with reasonable adjustments using API. If you've experimented with this before we'd be super keen to chat!
We use SITS by Tribal.
Mary.C.485
Re: How to Determine if Discussion has Feedback from Instructor via API
@Joshua.V.999
I believe I am tagging the correct individual (we met at D2L Fusion 2026 in Phoenix in the Builders Lab), but I think I may have found my answer.
Hi @Stephen.R.50 and @Matt.W.287 — thank you both for looking into this. I wanted to circle back and share that I did find a working approach, in case it helps anyone else who lands here.
The key insight is that discussion feedback isn't exposed through the Discussions API — it surfaces through the Grades API, provided the topic is associated with a grade item. The "Overall Feedback" an instructor enters in Quick Eval or the discussion grading interface is written to the grade value's Comments field, not to anything under /discussions/.
Here's the chain I ended up with (LE v1.95, LP v1.58):
1. Pull grade objects and find the discussion-linked ones
GET /d2l/api/le/1.95/{orgUnitId}/grades/
Each grade object may carry an AssociatedTool property. For discussions, AssociatedTool.ToolId === 3000, and AssociatedTool.ToolItemId is the discussion TopicId. That gives you a topic → grade-item map:
if (tool && tool.ToolId === 3000 && tool.ToolItemId) {
discussionGradeMap[tool.ToolItemId] = gradeObject.Id;
}
(For reference, ToolId === 51000 is Quizzes, and assignments come through the Dropbox API — same pattern works for those.)
2. Enumerate topics so you have names/IDs to join against
GET /d2l/api/le/1.95/{orgUnitId}/discussions/forums/
GET /d2l/api/le/1.95/{orgUnitId}/discussions/forums/{forumId}/topics/
3. Pull grade values for each discussion-linked grade item
GET /d2l/api/le/1.95/{orgUnitId}/grades/{gradeObjectId}/values/?pageSize=200
4. Read feedback off the returned GradeValue
This was the piece that took me a few tries. A student has instructor feedback when GradeValue.Comments.Html or GradeValue.Comments.Text is non-empty:
var hasFeedback = v.GradeValue && v.GradeValue.Comments && ((v.GradeValue.Comments.Html && v.GradeValue.Comments.Html.trim().length > 0) || (v.GradeValue.Comments.Text && v.GradeValue.Comments.Text.trim().length > 0));
Worth noting: I initially checked Comments.Content (the RichText shape documented elsewhere) and got zero hits across courses I knew had feedback. Dumping the raw GradeValue JSON for a graded student showed the payload uses Html and Text. If you're getting empty results, that's the first thing I'd check.
The same object also answers "who left it and when":
GradeValue.LastModified→ feedback timestampGradeValue.LastModifiedBy→ the instructor's user ID (resolvable to a name via the classlist/enrollments API)
Taking the max LastModified across students with non-empty comments gives you a per-topic "last feedback given" date, which is what my dashboard surfaces.
I verified this against a course where an instructor had graded a discussion via Quick Eval — all six students who posted came back with both a grade and populated Comments.Html.
The important caveat — where your answer still holds
This only works for discussion topics associated with a grade item. For a topic with no linked grade item, there are no grade values to inspect, and I found no reliable API path to determine whether an instructor left feedback. The ScoreOutOf/ScoredCount fields on the topic object only tell you a score was entered, not that written feedback exists. So for ungraded discussions, "not available via API" appears to still be the correct answer.
It's also specifically the grading feedback that's detectable — an instructor replying inline within the thread as a post is a different thing and isn't captured here.
Hope this saves someone else some time.
Re: Accessing User Courses via API
Hi Daniel,
The scopes look good. Ensure the user making the API call has the permission required to view the target user’s enrollments and role. Check:
- Admin Tools → Roles and Permissions → Users → View User Enrollments
- Admin Tools → Roles and Permissions → Users → Search for {roleName}
See permisison details noted at the top of the community resource
Hope that helps!
Chris.S.534
Quizzes not showing in Content until available date even though they aren't hidden
On the Quizzes page, future quizzes are listed for the students and they can click on them and see the description. However, when adding them into Content using Add Existing, the quiz does not show for students until the 'Available on' date. How can we enable future quizzes to be shown in Content for the students?
Adrian.V.583
Re: Bulk unenroll learners from specific Course Offering
Hi Tim,
Yes, you could create an Intelligent Agent in the course offering to run at a scheduled time to perform an unenroll of the users in the course.
See step 15 in the following resource
Hope that helps!
Chris.S.534
Re: Manager Dashboard
Hello @Keerthana.R.9219, thanks for your question.
Manager Dashboard works in cooperation with the User Attributes tool to assign a manger to individual users.
If you search for User Attributes from the admin menu and select the tab Attribute Definitions, you'll see the definitions that would have been set up during implementation of the tool, one of which could be named manager or supervisor.
Switch over to the Bulk Attribute Upload tab. On this page you'll see a Download template link, which will export a CSV file that includes the Attributes you would have seen in the Attribute Definitions tab.
To assign a manager, you'll insert the username for user being assigned, as well as the username for their manager within the manager/supervisor/etc field.
Make sure that you remove the second row in the file which indicates which fields are required and optional or else the file will return an error.
Once re-uploaded, the user who is now managing other users will be able to select the Manager Dashboard navbar link to see those now assigned users. Any other users who have permission to see Manager Dashboard but don't have anyone assigned to them will continue to see the 'there are no users who report to you' message.
Please also have a look at our documentation for Manager Dashboard. Of interest will be the sub-pages Importing Attributes/Understanding User Attributes:
I know this is a lot of information but hoping that it helps! If you have any questions just let us know and I'll do my best to assist.
~Stephen
Stephen.R.50
Re: Brightspace Data Sets Updates
Keeping on Top of Brightspace Data Sets updates now has upcoming changes for August through October 2026!
Claire.D.2