A learner gets program completion status after completing all the required courses in the program, and if their earned credit is more or equal to minimum credit required for completing the program. It is not required that learner needs to complete all the courses via a single program session only. Learners can enroll in selected course sessions in each program sessions as suited to them. Also, program administrators can choose to not offer all courses in all program sessions, in that situation learners would always have to enroll in different course sessions which would be in multiple program sessions.
Let's look at the picture below, here we have a program with 3 courses. But the 3 program sessions shown do not offer all 3 courses in any session.
Now learners can choose to individually enroll in the specific course sessions from specific program sessions like this picture
or a learner may choose to enroll in both course sessions in one program session, and pick the remaining course from the next program session
But in any case, system would award program to the learner only when they have been awarded all three course sessions. How a specific course session is awarded, can be fully controlled at the course session level. (See course completion article for details about it)
Whenever a learner gets awarded any course session, their status is synced automatically in all the programs where this course is included and the learner has enrolled in any course.
Program Automatic awarding can be turned off using program setting 'Auto Award Program', by default it's enabled it can be unchecked if you don't want system to mark program completion on completion of all mandatory courses and earning min required credits.
This may be needed for situations where courses and program delivery happens outside of the LMS (like field training), and LMS is used like system to keep all the training records whether or not they are delivered by the LMS. This can be done by opening the program members list page and then editing any learner's details.
This can also be used in situations where courses will be added in running programs and you don't want to mark completed after taking program's existing courses only as new courses will be added later.
Program admin can also edit learner's program level information and manually award program using Award checkbox.