Understanding application usage and sharing

Understanding how applications work can be a little tricky, we know, so we have prepared a couple of scenarios to walk you through all the steps a user has to relate to.We will also show you how sharing works and how you can implement support for it in you application.

Scenario: a teacher creates a test in itslearning

Teacher: Adding content to a course

A teacher logs in to itslearning and enters a course. From the add menu he can add a number of different learning tools. He adds a test, creates questions and then activates the test for the students in the course.

Technical description

A teacher accesses "Add learning activity" from within a course - a new learning object instance (with a unique LearningObjectId and LearningObjectInstanceId) of this learning tool is then created in itslearning for this course.

She is directed to the ”Add instance URL” specified by the application developer upon registration of the application.
The 3rd party application requires the teacher to fill a form it with content, for example by creating questions for the students to answer. The application then prompts the teacher to save her work.

The application then typically obtains key information such as course details and the title assigned to the learning object in itslearning. The application retrieves the learning object instance created in itslearning by issuing a REST service call, using values for learningObjectId and instanceId as supplied in the query string of the "Add instance URL".:

[GET] /learningObjects/{learningObjectId}/instances/{instanceId}

Since the learning tool is an application for creating tests, it is not just a passive learning resource but a learning activity (specified by the application developer on the ”add application” page) which requires action from the user/student. Depending on which of the three types of learning activities the test belongs to, an assessment type can be chosen for it. Let's assume this application uses advanced assessment:

The possible assessment types should be fetched via the web service call:
[GET] /learningObjects/{learningObjectId}/instances/{instanceId}/PossibleAssessments

Upon saving, the fields AssessmentId, ActiveToUtc and ActiveFromUtc are set in the learning object instance via new REST service call:
[PUT] /learningObjects/{learningObjectId}/instances/{instanceId}

The application specific data (such as the questions in this example) are stored by the learning tool on the 3rd party provider's application server.

Student: Viewing and interacting

Later that day a student belonging to the course logs in to itslearning and is notified in a task list that a new test has been added to a course she participates in. She clicks on the test, answers the questions and submits the test.

Technical description

The student accesses the test: The student is taken to the ”View instance URL” specified by the application developer, when creating the application. The student will have participate permission allowing her to submit an answer.

Student submits the test: The learning tool can calculate a grade or assessment item based on the assessment chosen earlier. The assessment items are first fetched using the web service call:[GET] /learningObjects/{learningObjectId}/instances/{instanceId}/AssessmentItems

The grade is reported to it’s learning via the web service call:[PUT] /learningObjects/{learningObjectId}/instances/{instanceId}/Reports/{userId}

Teacher: View quiz results in itslearning

The next day the teacher logs in to itslearning again. He browses through the recently submitted answers. The test is automatically assessed, and he goes through the report to see how each of his students has performed.

Technical description

The teacher clicks on the test: She is taken to the ”View instance URL” specified by the application developer. The teacher will have the evaluate permission allowing him to see reports.

The application has implemented functionality to display the students' answers to the teacher and fetches the assessments via a web service call to:

[GET] /learningObjects/{learningObjectId}/instances/{instanceId}/Reports

Teacher: View summary results

Reports from both third-party tools and the built-in itslearning tools are visible in a report visible for the teacher. This allows for a good overview for the teachers when they are grading the learners in a course.

Teacher: Sharing in library

The teacher can now share the test with other teachers on his school, his local authority or the whole itslearning community.


The itslearning platform is based around a solution solution where teachers can share content with other users.
Teachers can choose who to share with; users on her/his school, with users on other schools in her/his local authority or with users in the entire itslearning community.

Examples of how shared content can be used

A teacher creates content and shares it in his library

Roger is a teacher at Chesterton College. He creates a quiz and uploads it to his library. The quiz allows students to answer ten questions, and a report is generated and sent back to Roger after the quiz is taken. Roger shares the quiz in his library, allowing other teachers to use his quiz in their courses.

Technical description

  • The quiz that Roger made has a unique LearningObjectId which is shared in the library. Other teachers can add this learning object to their course. This will then generate a new instance with its own LearningObjectInstanceId but the LearningObjectId will be equal to the one Roger created.

Two teachers are using this content in their courses

Two teachers, Frank and Irene work on different schools but both are using Roger’s quiz in their courses. They add the quiz to their courses in itslearning, and ask their students to answer the quiz.

Technical description
  • The quizzes used by Frank and Irene both have the same LearningObjectId as the one Roger created, since the quizzes are just different instances of the same quiz. Thus they all have different LearningObjectInstanceIds.

Assessment on two students in each course

Christina and Richard, two of Frank’s students takes the quiz and receive an A and a C in the quiz. At the same time, two of Irene’s students get a D and an E. Even though the quiz is borrowed from the same library, the answers generated in the different courses are not connected.

When the quiz is changed by Roger the quiz in Frank’s and Irene’s courses are automatically updated, but the results from the students are not changed.

Technical description

  • When students answer the quiz the unique LearningObjectInstanceId is used to determine which course the reports received from the learning tool belongs to.

  • Since the learning object is the entity to which the content is connected, all instances of the object change when the object itself changes. As the content is stored on the application server and not in itslearning, the reports (which are stored in itslearning) are not affected by a change in the content.


More about sharing

Creating an application that supports sharing may look complicated at first glance, but please take a look at the following example. It is definitely worth to implement support for sharing, as the value of your application will increase a lot! It is really a powerful feature to be able to create content in one place and easily share it in many different courses.


"History, Industrial Revolution" is a test. It contains a lot of questions that are connected to LearningObjectId. Users with Participate permission should be allowed to submit answers. As you can see the title can be different in the various courses for the same content (LearningObjectId). Also the deadline, assessment scale, and when the test is active can vary from instance to instance, ModifyInstance or Modify Permission is required to change these properties.

There is one exception to this scenario. When an element is "Unpublished" in the Library (i.e. only the author and co-authors can see it), then we allow the author and co-authors to edit the element in the Course. This means that when the element in unpublished, we will grant the 'Modify' permission, even though the element is shared to the Library. When the author publishes the element (so it is available to a Organisation, Site or Community), the situation described above is leading again.

Here is a very simplified diagram of what the database structure could be - just to give you some ideas:


When you create data model and business logic for an application that supports sharing, you should be careful when deleting and editing content connected to a LearningObjectId, because it can be shared between many instances. E.g. marking records as deleted instead of physically deleting them and think about sharing scenarios when designing user interface will help.

Important: When a user in itslearning adds an instance into a course which refers to a library instance, the view page for your application will be called - not the add page. This is because content should already be in place. However, if your application depends on some settings on instance level before view page can be shown, feel free to redirect user to an appropriate page. In the example above this may be setting assessment scale to use etc.

Even if you don’t plan to code in c# it is a good idea to download the SDK and take a look at methods and comments in the classes (especially the ones in BasePage.cs)