From 141ce8c97abe36f1f8bb06a38623e93563d6c618 Mon Sep 17 00:00:00 2001
From: Esha
Date: Tue, 2 Jul 2019 12:42:54 +0530
Subject: Custom modules

---
 modules/esha/achievements/achievements.info.yml    |  11 ++
 modules/esha/achievements/achievements.install     |  22 ++++
 modules/esha/achievements/achievements.module      |  35 ++++++
 modules/esha/achievements/achievements.routing.yml |   8 ++
 modules/esha/achievements/composer.json            |  14 +++
 ...tity_form_display.node.achievements.default.yml |  92 ++++++++++++++
 ...tity_view_display.node.achievements.default.yml |  39 ++++++
 ...ntity_view_display.node.achievements.teaser.yml |  25 ++++
 .../install/core.entity_view_mode.node.teaser.yml  |  15 +++
 ....achievements.field_achievement_description.yml |  21 ++++
 ...ld.node.achievements.field_achievement_type.yml |  31 +++++
 ....storage.node.field_achievement_description.yml |  22 ++++
 .../field.storage.node.field_achievement_type.yml  |  23 ++++
 ...e_plus.migration.sample_achievements_import.yml |  36 ++++++
 .../config/install/node.type.achievements.yml      |  20 +++
 .../install/taxonomy.vocabulary.achievement.yml    |  12 ++
 .../src/Controller/achievementController.php       |  25 ++++
 .../achievements/templates/achievements.html.twig  |   1 +
 .../achievements/tests/src/Functional/LoadTest.php |  46 +++++++
 modules/esha/corporate/composer.json               |  14 +++
 ...splay.node.corporate_advisory_board.default.yml | 112 +++++++++++++++++
 ...splay.node.corporate_advisory_board.default.yml |  66 ++++++++++
 ...isplay.node.corporate_advisory_board.teaser.yml |  31 +++++
 .../install/core.entity_view_mode.node.teaser.yml  |  15 +++
 ...orporate_advisory_board.field_company_image.yml |  40 ++++++
 ...porate_advisory_board.field_company_website.yml |  25 ++++
 ....corporate_advisory_board.field_designation.yml |  21 ++++
 ...corporate_advisory_board.field_member_image.yml |  40 ++++++
 .../field.storage.node.field_company_image.yml     |  33 +++++
 .../field.storage.node.field_company_website.yml   |  22 ++++
 .../field.storage.node.field_designation.yml       |  24 ++++
 .../field.storage.node.field_member_image.yml      |  33 +++++
 .../config/install/image.style.thumbnail.yml       |  20 +++
 .../install/migrate_plus.migration.cab_import.yml  |  69 +++++++++++
 .../install/node.type.corporate_advisory_board.yml |  20 +++
 modules/esha/corporate/corporate.info.yml          |  14 +++
 modules/esha/corporate/corporate.install           |  22 ++++
 modules/esha/corporate/corporate.module            |  35 ++++++
 .../esha/corporate/templates/corporate.html.twig   |   1 +
 .../corporate/tests/src/Functional/LoadTest.php    |  46 +++++++
 modules/esha/lab/composer.json                     |  14 +++
 .../core.entity_form_display.node.lab.default.yml  | 138 +++++++++++++++++++++
 .../core.entity_view_display.node.lab.default.yml  |  83 +++++++++++++
 .../core.entity_view_display.node.lab.teaser.yml   |  22 ++++
 .../install/core.entity_view_mode.node.teaser.yml  |  12 ++
 .../field.field.node.lab.field_description_.yml    |  18 +++
 .../field.field.node.lab.field_faculty_e_mail.yml  |  18 +++
 ...field.field.node.lab.field_faculty_incharge.yml |  27 ++++
 ...field.field.node.lab.field_faculty_phone_no.yml |  22 ++++
 ...ld.node.lab.field_hardware_software_details.yml |  33 +++++
 .../field.field.node.lab.field_location.yml        |  18 +++
 .../field.field.node.lab.field_programmer_name.yml |  18 +++
 .../field.storage.node.field_description_.yml      |  19 +++
 .../field.storage.node.field_faculty_e_mail.yml    |  18 +++
 .../field.storage.node.field_faculty_incharge.yml  |  19 +++
 .../field.storage.node.field_faculty_phone_no.yml  |  20 +++
 ...torage.node.field_hardware_software_details.yml |  21 ++++
 .../install/field.storage.node.field_location.yml  |  21 ++++
 .../field.storage.node.field_programmer_name.yml   |  21 ++++
 .../esha/lab/config/install/node.type.fac_page.yml |  23 ++++
 modules/esha/lab/config/install/node.type.lab.yml  |  17 +++
 ...raphs.paragraphs_type.hardware_and_software.yml |   9 ++
 modules/esha/lab/lab.info.yml                      |  12 ++
 modules/esha/lab/lab.install                       |  22 ++++
 modules/esha/lab/lab.module                        |  35 ++++++
 modules/esha/lab/templates/lab.html.twig           |   1 +
 modules/esha/lab/tests/src/Functional/LoadTest.php |  46 +++++++
 modules/esha/labmanual/composer.json               |  14 +++
 ...entity_form_display.node.lab_manual.default.yml |  91 ++++++++++++++
 ...entity_view_display.node.lab_manual.default.yml |  40 ++++++
 ....entity_view_display.node.lab_manual.teaser.yml |  27 ++++
 .../install/core.entity_view_mode.node.teaser.yml  |  15 +++
 ...eld.field.node.lab_manual.field_description.yml |  21 ++++
 .../field.field.node.lab_manual.field_manual.yml   |  29 +++++
 .../field.storage.node.field_description.yml       |  22 ++++
 .../install/field.storage.node.field_manual.yml    |  26 ++++
 .../migrate_plus.migration.labmanuals_import.yml   |  51 ++++++++
 .../config/install/node.type.lab_manual.yml        |  20 +++
 modules/esha/labmanual/labmanual.info.yml          |  12 ++
 modules/esha/labmanual/labmanual.install           |  22 ++++
 modules/esha/labmanual/labmanual.module            |  35 ++++++
 .../esha/labmanual/templates/labmanual.html.twig   |   1 +
 .../labmanual/tests/src/Functional/LoadTest.php    |  46 +++++++
 modules/esha/onlinecourse/composer.json            |  14 +++
 ...ity_form_display.node.online_course.default.yml |  99 +++++++++++++++
 ...ity_view_display.node.online_course.default.yml |  51 ++++++++
 ...tity_view_display.node.online_course.teaser.yml |  24 ++++
 .../install/core.entity_view_mode.node.teaser.yml  |  12 ++
 ...field.node.online_course.field_faculty_name.yml |  27 ++++
 ...field.node.online_course.field_link_to_cour.yml |  22 ++++
 ...d.field.node.online_course.field_offered_by.yml |  18 +++
 .../field.storage.node.field_faculty_name.yml      |  19 +++
 .../field.storage.node.field_link_to_cour.yml      |  19 +++
 .../field.storage.node.field_offered_by.yml        |  21 ++++
 .../migrate_plus.migration.onlinecourse_sample.yml |  36 ++++++
 .../config/install/node.type.fac_page.yml          |  23 ++++
 .../config/install/node.type.online_course.yml     |  17 +++
 modules/esha/onlinecourse/onlinecourse.info.yml    |  12 ++
 modules/esha/onlinecourse/onlinecourse.install     |  22 ++++
 modules/esha/onlinecourse/onlinecourse.module      |  35 ++++++
 .../onlinecourse/templates/onlinecourse.html.twig  |   1 +
 .../onlinecourse/tests/src/Functional/LoadTest.php |  46 +++++++
 modules/esha/placements/composer.json              |  14 +++
 ...entity_form_display.node.placements.default.yml | 120 ++++++++++++++++++
 ...entity_view_display.node.placements.default.yml |  67 ++++++++++
 ....entity_view_display.node.placements.teaser.yml |  26 ++++
 .../install/core.entity_view_mode.node.teaser.yml  |  15 +++
 .../install/field.field.node.placements.body.yml   |  24 ++++
 .../field.field.node.placements.field_new.yml      |  31 +++++
 .../field.field.node.placements.field_placed.yml   |  21 ++++
 ...node.placements.field_total_students_placed.yml |  25 ++++
 .../field.field.node.placements.field_year.yml     |  31 +++++
 .../config/install/field.storage.node.body.yml     |  24 ++++
 .../install/field.storage.node.field_new.yml       |  23 ++++
 .../install/field.storage.node.field_placed.yml    |  24 ++++
 ...ld.storage.node.field_total_students_placed.yml |  23 ++++
 .../install/field.storage.node.field_year.yml      |  23 ++++
 .../migrate_plus.migration.placements_import1.yml  |  30 +++++
 .../config/install/node.type.placements.yml        |  15 +++
 .../config/install/taxonomy.vocabulary.vocab.yml   |  12 ++
 .../config/install/taxonomy.vocabulary.year.yml    |  12 ++
 modules/esha/placements/placements.info.yml        |  13 ++
 modules/esha/placements/placements.install         |  22 ++++
 modules/esha/placements/placements.module          |  35 ++++++
 modules/esha/placements/placements.routing.yml     |   8 ++
 .../src/Controller/PlacementController.php         |  25 ++++
 .../esha/placements/templates/placements.html.twig |   1 +
 .../placements/tests/src/Functional/LoadTest.php   |  46 +++++++
 modules/esha/programs/composer.json                |  14 +++
 .../core.entity_form_display.node.p.default.yml    | 124 ++++++++++++++++++
 .../core.entity_view_display.node.p.default.yml    |  74 +++++++++++
 .../core.entity_view_display.node.p.teaser.yml     |  30 +++++
 .../config/install/field.field.node.p.body.yml     |  21 ++++
 .../field.field.node.p.field_courseware.yml        |  26 ++++
 .../field.field.node.p.field_curriculum.yml        |  26 ++++
 .../install/field.field.node.p.field_degree.yml    |  28 +++++
 .../field.field.node.p.field_lesson_plan.yml       |  26 ++++
 .../field.field.node.p.field_objectives.yml        |  26 ++++
 .../field.storage.node.field_courseware.yml        |  23 ++++
 .../field.storage.node.field_curriculum.yml        |  23 ++++
 .../install/field.storage.node.field_degree.yml    |  20 +++
 .../field.storage.node.field_lesson_plan.yml       |  23 ++++
 .../field.storage.node.field_objectives.yml        |  23 ++++
 .../esha/programs/config/install/node.type.p.yml   |  17 +++
 .../programs/config/install/programs_offered.yaml  | 110 ++++++++++++++++
 .../taxonomy.vocabulary.offered_programs.yml       |   9 ++
 modules/esha/programs/programs.info.yml            |  13 ++
 modules/esha/programs/programs.install             |  22 ++++
 modules/esha/programs/programs.module              |  35 ++++++
 modules/esha/programs/programs.routing.yml         |   8 ++
 .../src/Controller/ProgramsOfferedController.php   |  25 ++++
 modules/esha/programs/templates/programs.html.twig |   1 +
 .../programs/tests/src/Functional/LoadTest.php     |  46 +++++++
 modules/esha/sig/composer.json                     |  14 +++
 ...isplay.node.special_interest_groups.default.yml |  93 ++++++++++++++
 ...isplay.node.special_interest_groups.default.yml |  40 ++++++
 ...display.node.special_interest_groups.teaser.yml |  25 ++++
 .../install/core.entity_view_mode.node.teaser.yml  |  15 +++
 ....special_interest_groups.field_faculty_head.yml |  30 +++++
 ...e.special_interest_groups.field_sig_members.yml |  30 +++++
 .../field.storage.node.field_faculty_head.yml      |  22 ++++
 .../field.storage.node.field_sig_members.yml       |  22 ++++
 .../install/migrate_plus.migration.sig_sample.yml  |  40 ++++++
 .../esha/sig/config/install/node.type.fac_page.yml |  26 ++++
 .../install/node.type.special_interest_groups.yml  |  20 +++
 modules/esha/sig/sig.info.yml                      |  10 ++
 modules/esha/sig/sig.install                       |  22 ++++
 modules/esha/sig/sig.module                        |  35 ++++++
 modules/esha/sig/templates/sig.html.twig           |   1 +
 modules/esha/sig/tests/src/Functional/LoadTest.php |  46 +++++++
 170 files changed, 4912 insertions(+)
 create mode 100644 modules/esha/achievements/achievements.info.yml
 create mode 100644 modules/esha/achievements/achievements.install
 create mode 100644 modules/esha/achievements/achievements.module
 create mode 100644 modules/esha/achievements/achievements.routing.yml
 create mode 100644 modules/esha/achievements/composer.json
 create mode 100644 modules/esha/achievements/config/install/core.entity_form_display.node.achievements.default.yml
 create mode 100644 modules/esha/achievements/config/install/core.entity_view_display.node.achievements.default.yml
 create mode 100644 modules/esha/achievements/config/install/core.entity_view_display.node.achievements.teaser.yml
 create mode 100644 modules/esha/achievements/config/install/core.entity_view_mode.node.teaser.yml
 create mode 100644 modules/esha/achievements/config/install/field.field.node.achievements.field_achievement_description.yml
 create mode 100644 modules/esha/achievements/config/install/field.field.node.achievements.field_achievement_type.yml
 create mode 100644 modules/esha/achievements/config/install/field.storage.node.field_achievement_description.yml
 create mode 100644 modules/esha/achievements/config/install/field.storage.node.field_achievement_type.yml
 create mode 100644 modules/esha/achievements/config/install/migrate_plus.migration.sample_achievements_import.yml
 create mode 100644 modules/esha/achievements/config/install/node.type.achievements.yml
 create mode 100644 modules/esha/achievements/config/install/taxonomy.vocabulary.achievement.yml
 create mode 100644 modules/esha/achievements/src/Controller/achievementController.php
 create mode 100644 modules/esha/achievements/templates/achievements.html.twig
 create mode 100644 modules/esha/achievements/tests/src/Functional/LoadTest.php
 create mode 100644 modules/esha/corporate/composer.json
 create mode 100644 modules/esha/corporate/config/install/core.entity_form_display.node.corporate_advisory_board.default.yml
 create mode 100644 modules/esha/corporate/config/install/core.entity_view_display.node.corporate_advisory_board.default.yml
 create mode 100644 modules/esha/corporate/config/install/core.entity_view_display.node.corporate_advisory_board.teaser.yml
 create mode 100644 modules/esha/corporate/config/install/core.entity_view_mode.node.teaser.yml
 create mode 100644 modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_company_image.yml
 create mode 100644 modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_company_website.yml
 create mode 100644 modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_designation.yml
 create mode 100644 modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_member_image.yml
 create mode 100644 modules/esha/corporate/config/install/field.storage.node.field_company_image.yml
 create mode 100644 modules/esha/corporate/config/install/field.storage.node.field_company_website.yml
 create mode 100644 modules/esha/corporate/config/install/field.storage.node.field_designation.yml
 create mode 100644 modules/esha/corporate/config/install/field.storage.node.field_member_image.yml
 create mode 100644 modules/esha/corporate/config/install/image.style.thumbnail.yml
 create mode 100644 modules/esha/corporate/config/install/migrate_plus.migration.cab_import.yml
 create mode 100644 modules/esha/corporate/config/install/node.type.corporate_advisory_board.yml
 create mode 100644 modules/esha/corporate/corporate.info.yml
 create mode 100644 modules/esha/corporate/corporate.install
 create mode 100644 modules/esha/corporate/corporate.module
 create mode 100644 modules/esha/corporate/templates/corporate.html.twig
 create mode 100644 modules/esha/corporate/tests/src/Functional/LoadTest.php
 create mode 100644 modules/esha/lab/composer.json
 create mode 100644 modules/esha/lab/config/install/core.entity_form_display.node.lab.default.yml
 create mode 100644 modules/esha/lab/config/install/core.entity_view_display.node.lab.default.yml
 create mode 100644 modules/esha/lab/config/install/core.entity_view_display.node.lab.teaser.yml
 create mode 100644 modules/esha/lab/config/install/core.entity_view_mode.node.teaser.yml
 create mode 100644 modules/esha/lab/config/install/field.field.node.lab.field_description_.yml
 create mode 100644 modules/esha/lab/config/install/field.field.node.lab.field_faculty_e_mail.yml
 create mode 100644 modules/esha/lab/config/install/field.field.node.lab.field_faculty_incharge.yml
 create mode 100644 modules/esha/lab/config/install/field.field.node.lab.field_faculty_phone_no.yml
 create mode 100644 modules/esha/lab/config/install/field.field.node.lab.field_hardware_software_details.yml
 create mode 100644 modules/esha/lab/config/install/field.field.node.lab.field_location.yml
 create mode 100644 modules/esha/lab/config/install/field.field.node.lab.field_programmer_name.yml
 create mode 100644 modules/esha/lab/config/install/field.storage.node.field_description_.yml
 create mode 100644 modules/esha/lab/config/install/field.storage.node.field_faculty_e_mail.yml
 create mode 100644 modules/esha/lab/config/install/field.storage.node.field_faculty_incharge.yml
 create mode 100644 modules/esha/lab/config/install/field.storage.node.field_faculty_phone_no.yml
 create mode 100644 modules/esha/lab/config/install/field.storage.node.field_hardware_software_details.yml
 create mode 100644 modules/esha/lab/config/install/field.storage.node.field_location.yml
 create mode 100644 modules/esha/lab/config/install/field.storage.node.field_programmer_name.yml
 create mode 100644 modules/esha/lab/config/install/node.type.fac_page.yml
 create mode 100644 modules/esha/lab/config/install/node.type.lab.yml
 create mode 100644 modules/esha/lab/config/install/paragraphs.paragraphs_type.hardware_and_software.yml
 create mode 100644 modules/esha/lab/lab.info.yml
 create mode 100644 modules/esha/lab/lab.install
 create mode 100644 modules/esha/lab/lab.module
 create mode 100644 modules/esha/lab/templates/lab.html.twig
 create mode 100644 modules/esha/lab/tests/src/Functional/LoadTest.php
 create mode 100644 modules/esha/labmanual/composer.json
 create mode 100644 modules/esha/labmanual/config/install/core.entity_form_display.node.lab_manual.default.yml
 create mode 100644 modules/esha/labmanual/config/install/core.entity_view_display.node.lab_manual.default.yml
 create mode 100644 modules/esha/labmanual/config/install/core.entity_view_display.node.lab_manual.teaser.yml
 create mode 100644 modules/esha/labmanual/config/install/core.entity_view_mode.node.teaser.yml
 create mode 100644 modules/esha/labmanual/config/install/field.field.node.lab_manual.field_description.yml
 create mode 100644 modules/esha/labmanual/config/install/field.field.node.lab_manual.field_manual.yml
 create mode 100644 modules/esha/labmanual/config/install/field.storage.node.field_description.yml
 create mode 100644 modules/esha/labmanual/config/install/field.storage.node.field_manual.yml
 create mode 100644 modules/esha/labmanual/config/install/migrate_plus.migration.labmanuals_import.yml
 create mode 100644 modules/esha/labmanual/config/install/node.type.lab_manual.yml
 create mode 100644 modules/esha/labmanual/labmanual.info.yml
 create mode 100644 modules/esha/labmanual/labmanual.install
 create mode 100644 modules/esha/labmanual/labmanual.module
 create mode 100644 modules/esha/labmanual/templates/labmanual.html.twig
 create mode 100644 modules/esha/labmanual/tests/src/Functional/LoadTest.php
 create mode 100644 modules/esha/onlinecourse/composer.json
 create mode 100644 modules/esha/onlinecourse/config/install/core.entity_form_display.node.online_course.default.yml
 create mode 100644 modules/esha/onlinecourse/config/install/core.entity_view_display.node.online_course.default.yml
 create mode 100644 modules/esha/onlinecourse/config/install/core.entity_view_display.node.online_course.teaser.yml
 create mode 100644 modules/esha/onlinecourse/config/install/core.entity_view_mode.node.teaser.yml
 create mode 100644 modules/esha/onlinecourse/config/install/field.field.node.online_course.field_faculty_name.yml
 create mode 100644 modules/esha/onlinecourse/config/install/field.field.node.online_course.field_link_to_cour.yml
 create mode 100644 modules/esha/onlinecourse/config/install/field.field.node.online_course.field_offered_by.yml
 create mode 100644 modules/esha/onlinecourse/config/install/field.storage.node.field_faculty_name.yml
 create mode 100644 modules/esha/onlinecourse/config/install/field.storage.node.field_link_to_cour.yml
 create mode 100644 modules/esha/onlinecourse/config/install/field.storage.node.field_offered_by.yml
 create mode 100644 modules/esha/onlinecourse/config/install/migrate_plus.migration.onlinecourse_sample.yml
 create mode 100644 modules/esha/onlinecourse/config/install/node.type.fac_page.yml
 create mode 100644 modules/esha/onlinecourse/config/install/node.type.online_course.yml
 create mode 100644 modules/esha/onlinecourse/onlinecourse.info.yml
 create mode 100644 modules/esha/onlinecourse/onlinecourse.install
 create mode 100644 modules/esha/onlinecourse/onlinecourse.module
 create mode 100644 modules/esha/onlinecourse/templates/onlinecourse.html.twig
 create mode 100644 modules/esha/onlinecourse/tests/src/Functional/LoadTest.php
 create mode 100644 modules/esha/placements/composer.json
 create mode 100644 modules/esha/placements/config/install/core.entity_form_display.node.placements.default.yml
 create mode 100644 modules/esha/placements/config/install/core.entity_view_display.node.placements.default.yml
 create mode 100644 modules/esha/placements/config/install/core.entity_view_display.node.placements.teaser.yml
 create mode 100644 modules/esha/placements/config/install/core.entity_view_mode.node.teaser.yml
 create mode 100644 modules/esha/placements/config/install/field.field.node.placements.body.yml
 create mode 100644 modules/esha/placements/config/install/field.field.node.placements.field_new.yml
 create mode 100644 modules/esha/placements/config/install/field.field.node.placements.field_placed.yml
 create mode 100644 modules/esha/placements/config/install/field.field.node.placements.field_total_students_placed.yml
 create mode 100644 modules/esha/placements/config/install/field.field.node.placements.field_year.yml
 create mode 100644 modules/esha/placements/config/install/field.storage.node.body.yml
 create mode 100644 modules/esha/placements/config/install/field.storage.node.field_new.yml
 create mode 100644 modules/esha/placements/config/install/field.storage.node.field_placed.yml
 create mode 100644 modules/esha/placements/config/install/field.storage.node.field_total_students_placed.yml
 create mode 100644 modules/esha/placements/config/install/field.storage.node.field_year.yml
 create mode 100644 modules/esha/placements/config/install/migrate_plus.migration.placements_import1.yml
 create mode 100644 modules/esha/placements/config/install/node.type.placements.yml
 create mode 100644 modules/esha/placements/config/install/taxonomy.vocabulary.vocab.yml
 create mode 100644 modules/esha/placements/config/install/taxonomy.vocabulary.year.yml
 create mode 100644 modules/esha/placements/placements.info.yml
 create mode 100644 modules/esha/placements/placements.install
 create mode 100644 modules/esha/placements/placements.module
 create mode 100644 modules/esha/placements/placements.routing.yml
 create mode 100644 modules/esha/placements/src/Controller/PlacementController.php
 create mode 100644 modules/esha/placements/templates/placements.html.twig
 create mode 100644 modules/esha/placements/tests/src/Functional/LoadTest.php
 create mode 100644 modules/esha/programs/composer.json
 create mode 100644 modules/esha/programs/config/install/core.entity_form_display.node.p.default.yml
 create mode 100644 modules/esha/programs/config/install/core.entity_view_display.node.p.default.yml
 create mode 100644 modules/esha/programs/config/install/core.entity_view_display.node.p.teaser.yml
 create mode 100644 modules/esha/programs/config/install/field.field.node.p.body.yml
 create mode 100644 modules/esha/programs/config/install/field.field.node.p.field_courseware.yml
 create mode 100644 modules/esha/programs/config/install/field.field.node.p.field_curriculum.yml
 create mode 100644 modules/esha/programs/config/install/field.field.node.p.field_degree.yml
 create mode 100644 modules/esha/programs/config/install/field.field.node.p.field_lesson_plan.yml
 create mode 100644 modules/esha/programs/config/install/field.field.node.p.field_objectives.yml
 create mode 100644 modules/esha/programs/config/install/field.storage.node.field_courseware.yml
 create mode 100644 modules/esha/programs/config/install/field.storage.node.field_curriculum.yml
 create mode 100644 modules/esha/programs/config/install/field.storage.node.field_degree.yml
 create mode 100644 modules/esha/programs/config/install/field.storage.node.field_lesson_plan.yml
 create mode 100644 modules/esha/programs/config/install/field.storage.node.field_objectives.yml
 create mode 100644 modules/esha/programs/config/install/node.type.p.yml
 create mode 100644 modules/esha/programs/config/install/programs_offered.yaml
 create mode 100644 modules/esha/programs/config/install/taxonomy.vocabulary.offered_programs.yml
 create mode 100644 modules/esha/programs/programs.info.yml
 create mode 100644 modules/esha/programs/programs.install
 create mode 100644 modules/esha/programs/programs.module
 create mode 100644 modules/esha/programs/programs.routing.yml
 create mode 100644 modules/esha/programs/src/Controller/ProgramsOfferedController.php
 create mode 100644 modules/esha/programs/templates/programs.html.twig
 create mode 100644 modules/esha/programs/tests/src/Functional/LoadTest.php
 create mode 100644 modules/esha/sig/composer.json
 create mode 100644 modules/esha/sig/config/install/core.entity_form_display.node.special_interest_groups.default.yml
 create mode 100644 modules/esha/sig/config/install/core.entity_view_display.node.special_interest_groups.default.yml
 create mode 100644 modules/esha/sig/config/install/core.entity_view_display.node.special_interest_groups.teaser.yml
 create mode 100644 modules/esha/sig/config/install/core.entity_view_mode.node.teaser.yml
 create mode 100644 modules/esha/sig/config/install/field.field.node.special_interest_groups.field_faculty_head.yml
 create mode 100644 modules/esha/sig/config/install/field.field.node.special_interest_groups.field_sig_members.yml
 create mode 100644 modules/esha/sig/config/install/field.storage.node.field_faculty_head.yml
 create mode 100644 modules/esha/sig/config/install/field.storage.node.field_sig_members.yml
 create mode 100644 modules/esha/sig/config/install/migrate_plus.migration.sig_sample.yml
 create mode 100644 modules/esha/sig/config/install/node.type.fac_page.yml
 create mode 100644 modules/esha/sig/config/install/node.type.special_interest_groups.yml
 create mode 100644 modules/esha/sig/sig.info.yml
 create mode 100644 modules/esha/sig/sig.install
 create mode 100644 modules/esha/sig/sig.module
 create mode 100644 modules/esha/sig/templates/sig.html.twig
 create mode 100644 modules/esha/sig/tests/src/Functional/LoadTest.php

diff --git a/modules/esha/achievements/achievements.info.yml b/modules/esha/achievements/achievements.info.yml
new file mode 100644
index 0000000..3ed1004
--- /dev/null
+++ b/modules/esha/achievements/achievements.info.yml
@@ -0,0 +1,11 @@
+name: 'achievements'
+type: module
+description: 'Module for Achievements Placement Type'
+core: 8.x
+package: 'Custom'
+dependencies:
+  - drupal:path
+  - drupal:user
+  - drupal:node
+  - drupal:taxonomy
+  - drupal:menu_ui
diff --git a/modules/esha/achievements/achievements.install b/modules/esha/achievements/achievements.install
new file mode 100644
index 0000000..4599c02
--- /dev/null
+++ b/modules/esha/achievements/achievements.install
@@ -0,0 +1,22 @@
+
+<?php
+/**
+* Implements hook_uninstall().
+*/
+function achievements_uninstall() { //<-- replace “welcome” with your module machine name 
+ // Load services.
+ $queryFactory = \Drupal::service('entity.query');
+ $nodeStorage  = \Drupal::entityManager()->getStorage('node');
+
+ // Query all entity.
+ $query = $queryFactory->get('node')
+// <-- replace event in below line with your content type machine name
+   ->condition('type', 'achievements'); 
+ $nids = $query->execute();
+
+ // Delete entities.
+ if (!empty($nids)) {
+   $entities = $nodeStorage->loadMultiple($nids);
+   $nodeStorage->delete($entities);
+ }
+}
diff --git a/modules/esha/achievements/achievements.module b/modules/esha/achievements/achievements.module
new file mode 100644
index 0000000..76939d9
--- /dev/null
+++ b/modules/esha/achievements/achievements.module
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains achievements.module.
+ */
+
+use Drupal\Core\Routing\RouteMatchInterface;
+
+/**
+ * Implements hook_help().
+ */
+function achievements_help($route_name, RouteMatchInterface $route_match) {
+  switch ($route_name) {
+    // Main module help for the achievements module.
+    case 'help.page.achievements':
+      $output = '';
+      $output .= '<h3>' . t('About') . '</h3>';
+      $output .= '<p>' . t('Module for Achievements Placement Type') . '</p>';
+      return $output;
+
+    default:
+  }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function achievements_theme() {
+  return [
+    'achievements' => [
+      'render element' => 'children',
+    ],
+  ];
+}
diff --git a/modules/esha/achievements/achievements.routing.yml b/modules/esha/achievements/achievements.routing.yml
new file mode 100644
index 0000000..e3f475c
--- /dev/null
+++ b/modules/esha/achievements/achievements.routing.yml
@@ -0,0 +1,8 @@
+
+achievements.achievement_controller_hello:
+  path: '/achievements/hello/{name}'
+  defaults:
+    _controller: '\Drupal\achievements\Controller\achievementController::hello'
+    _title: 'control'
+  requirements:
+    _permission: 'access content'
diff --git a/modules/esha/achievements/composer.json b/modules/esha/achievements/composer.json
new file mode 100644
index 0000000..34e90d8
--- /dev/null
+++ b/modules/esha/achievements/composer.json
@@ -0,0 +1,14 @@
+{
+  "name": "drupal/achievements",
+  "type": "drupal-module",
+  "description": "Module for Achievements Placement Type",
+  "keywords": ["Drupal"],
+  "license": "GPL-2.0+",
+  "homepage": "https://www.drupal.org/project/achievements",
+  "minimum-stability": "dev",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/achievements",
+    "source": "http://cgit.drupalcode.org/achievements"
+  },
+  "require": { }
+}
diff --git a/modules/esha/achievements/config/install/core.entity_form_display.node.achievements.default.yml b/modules/esha/achievements/config/install/core.entity_form_display.node.achievements.default.yml
new file mode 100644
index 0000000..d77ebe5
--- /dev/null
+++ b/modules/esha/achievements/config/install/core.entity_form_display.node.achievements.default.yml
@@ -0,0 +1,92 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.achievements.field_achievement_description
+    - field.field.node.achievements.field_achievement_type
+    - node.type.achievements
+  module:
+    - path
+  enforced:
+    module:
+      - achievements
+id: node.achievements.default
+targetEntityType: node
+bundle: achievements
+mode: default
+content:
+  created:
+    type: datetime_timestamp
+    weight: 10
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  field_achievement_description:
+    weight: 123
+    settings:
+      rows: 5
+      placeholder: ''
+    third_party_settings: {  }
+    type: string_textarea
+    region: content
+  field_achievement_type:
+    weight: 122
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: entity_reference_autocomplete
+    region: content
+  langcode:
+    type: language_select
+    weight: 2
+    region: content
+    settings:
+      include_locked: true
+    third_party_settings: {  }
+  path:
+    type: path
+    weight: 30
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  promote:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 15
+    region: content
+    third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
+  sticky:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 16
+    region: content
+    third_party_settings: {  }
+  title:
+    type: string_textfield
+    weight: -5
+    region: content
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  uid:
+    type: entity_reference_autocomplete
+    weight: 5
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    region: content
+    third_party_settings: {  }
+hidden: {  }
diff --git a/modules/esha/achievements/config/install/core.entity_view_display.node.achievements.default.yml b/modules/esha/achievements/config/install/core.entity_view_display.node.achievements.default.yml
new file mode 100644
index 0000000..1ed7439
--- /dev/null
+++ b/modules/esha/achievements/config/install/core.entity_view_display.node.achievements.default.yml
@@ -0,0 +1,39 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.achievements.field_achievement_description
+    - field.field.node.achievements.field_achievement_type
+    - node.type.achievements
+  module:
+    - user
+  enforced:
+    module:
+      - achievements
+id: node.achievements.default
+targetEntityType: node
+bundle: achievements
+mode: default
+content:
+  field_achievement_description:
+    weight: 103
+    label: above
+    settings: {  }
+    third_party_settings: {  }
+    type: basic_string
+    region: content
+  field_achievement_type:
+    weight: 102
+    label: above
+    settings:
+      link: true
+    third_party_settings: {  }
+    type: entity_reference_label
+    region: content
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  langcode: true
diff --git a/modules/esha/achievements/config/install/core.entity_view_display.node.achievements.teaser.yml b/modules/esha/achievements/config/install/core.entity_view_display.node.achievements.teaser.yml
new file mode 100644
index 0000000..a10099d
--- /dev/null
+++ b/modules/esha/achievements/config/install/core.entity_view_display.node.achievements.teaser.yml
@@ -0,0 +1,25 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.node.teaser
+    - field.field.node.achievements.field_achievement_type
+    - node.type.achievements
+  module:
+    - user
+  enforced:
+    module:
+      - achievements
+id: node.achievements.teaser
+targetEntityType: node
+bundle: achievements
+mode: teaser
+content:
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  field_achievement_type: true
+  langcode: true
diff --git a/modules/esha/achievements/config/install/core.entity_view_mode.node.teaser.yml b/modules/esha/achievements/config/install/core.entity_view_mode.node.teaser.yml
new file mode 100644
index 0000000..83ada37
--- /dev/null
+++ b/modules/esha/achievements/config/install/core.entity_view_mode.node.teaser.yml
@@ -0,0 +1,15 @@
+uuid: eae4e8eb-df75-49ff-b350-c4bd59679b36
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - achievements
+_core:
+  default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4
+id: node.teaser
+label: Teaser
+targetEntityType: node
+cache: true
diff --git a/modules/esha/achievements/config/install/field.field.node.achievements.field_achievement_description.yml b/modules/esha/achievements/config/install/field.field.node.achievements.field_achievement_description.yml
new file mode 100644
index 0000000..99b94d2
--- /dev/null
+++ b/modules/esha/achievements/config/install/field.field.node.achievements.field_achievement_description.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_achievement_description
+    - node.type.achievements
+  enforced:
+    module:
+      - achievements
+id: node.achievements.field_achievement_description
+field_name: field_achievement_description
+entity_type: node
+bundle: achievements
+label: 'Achievement Description'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings: {  }
+field_type: string_long
diff --git a/modules/esha/achievements/config/install/field.field.node.achievements.field_achievement_type.yml b/modules/esha/achievements/config/install/field.field.node.achievements.field_achievement_type.yml
new file mode 100644
index 0000000..24f0ec1
--- /dev/null
+++ b/modules/esha/achievements/config/install/field.field.node.achievements.field_achievement_type.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_achievement_type
+    - node.type.achievements
+    - taxonomy.vocabulary.achievement
+  enforced:
+    module:
+      - achievements
+id: node.achievements.field_achievement_type
+field_name: field_achievement_type
+entity_type: node
+bundle: achievements
+label: 'Achievement Type'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:taxonomy_term'
+  handler_settings:
+    target_bundles:
+      achievement: achievement
+    sort:
+      field: name
+      direction: asc
+    auto_create: false
+    auto_create_bundle: ''
+field_type: entity_reference
diff --git a/modules/esha/achievements/config/install/field.storage.node.field_achievement_description.yml b/modules/esha/achievements/config/install/field.storage.node.field_achievement_description.yml
new file mode 100644
index 0000000..fcd5c47
--- /dev/null
+++ b/modules/esha/achievements/config/install/field.storage.node.field_achievement_description.yml
@@ -0,0 +1,22 @@
+uuid: 10af3d6e-5dd8-4248-a517-ad48ef3d8f62
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - achievements
+id: node.field_achievement_description
+field_name: field_achievement_description
+entity_type: node
+type: string_long
+settings:
+  case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/achievements/config/install/field.storage.node.field_achievement_type.yml b/modules/esha/achievements/config/install/field.storage.node.field_achievement_type.yml
new file mode 100644
index 0000000..6a01531
--- /dev/null
+++ b/modules/esha/achievements/config/install/field.storage.node.field_achievement_type.yml
@@ -0,0 +1,23 @@
+uuid: 01281d95-1c9e-4ada-b282-a81737d96e79
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+    - taxonomy
+  enforced:
+    module:
+      - achievements
+id: node.field_achievement_type
+field_name: field_achievement_type
+entity_type: node
+type: entity_reference
+settings:
+  target_type: taxonomy_term
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/achievements/config/install/migrate_plus.migration.sample_achievements_import.yml b/modules/esha/achievements/config/install/migrate_plus.migration.sample_achievements_import.yml
new file mode 100644
index 0000000..41919df
--- /dev/null
+++ b/modules/esha/achievements/config/install/migrate_plus.migration.sample_achievements_import.yml
@@ -0,0 +1,36 @@
+uuid: 3397f245-46fb-426c-bc42-4ea803dca435
+langcode: en
+status: true
+id: sample_achievements_import
+class: null
+field_plugin_method: null
+cck_plugin_method: null
+migration_tags: null
+migration_group: default
+label: 'Sample Achievements Import'
+source:
+  plugin: csv
+  path: /var/www/CSV/achievements_sample.csv
+  delimiter: ','
+  enclosure: '"'
+  header_row_count: 1
+  keys:
+    - id
+process:
+  type:
+    plugin: default_value
+    default_value: achievements
+  title: title
+  field_achievement_description: description
+  field_achievement_type:
+    -
+      plugin: entity_lookup
+      entity_type: taxonomy_term
+      bundle: achievement
+      source: type
+destination:
+  plugin: 'entity:node'
+  bundle: achievements
+migration_dependencies: 
+  required: {  }
+  optional: {  }
diff --git a/modules/esha/achievements/config/install/node.type.achievements.yml b/modules/esha/achievements/config/install/node.type.achievements.yml
new file mode 100644
index 0000000..f2fccbb
--- /dev/null
+++ b/modules/esha/achievements/config/install/node.type.achievements.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - menu_ui
+  enforced:
+    module:
+      - achievements
+# third_party_settings:
+#   menu_ui:
+#     available_menus:
+#       - main
+#     parent: 'main:'
+name: Achievements
+type: achievements
+description: ''
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/achievements/config/install/taxonomy.vocabulary.achievement.yml b/modules/esha/achievements/config/install/taxonomy.vocabulary.achievement.yml
new file mode 100644
index 0000000..0d6ce9c
--- /dev/null
+++ b/modules/esha/achievements/config/install/taxonomy.vocabulary.achievement.yml
@@ -0,0 +1,12 @@
+uuid: 67cd72f5-de5c-476a-b102-813963ef0b9f
+langcode: en
+status: true
+dependencies: 
+  enforced:
+    module:
+      - achievements
+name: Achievement
+vid: achievement
+description: 'Achieved by Staff/Students'
+hierarchy: 0
+weight: 0
diff --git a/modules/esha/achievements/src/Controller/achievementController.php b/modules/esha/achievements/src/Controller/achievementController.php
new file mode 100644
index 0000000..04f947e
--- /dev/null
+++ b/modules/esha/achievements/src/Controller/achievementController.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Drupal\achievements\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
+
+/**
+ * Class achievementController.
+ */
+class achievementController extends ControllerBase {
+
+  /**
+   * Hello.
+   *
+   * @return string
+   *   Return Hello string.
+   */
+  public function hello($name) {
+    return [
+      '#type' => 'markup',
+      '#markup' => $this->t('Implement method: hello with parameter(s): $name'),
+    ];
+  }
+
+}
diff --git a/modules/esha/achievements/templates/achievements.html.twig b/modules/esha/achievements/templates/achievements.html.twig
new file mode 100644
index 0000000..91e43c8
--- /dev/null
+++ b/modules/esha/achievements/templates/achievements.html.twig
@@ -0,0 +1 @@
+<!-- Add you custom twig html here -->
\ No newline at end of file
diff --git a/modules/esha/achievements/tests/src/Functional/LoadTest.php b/modules/esha/achievements/tests/src/Functional/LoadTest.php
new file mode 100644
index 0000000..0d54e64
--- /dev/null
+++ b/modules/esha/achievements/tests/src/Functional/LoadTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\Tests\achievements\Functional;
+
+use Drupal\Core\Url;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Simple test to ensure that main page loads with module enabled.
+ *
+ * @group achievements
+ */
+class LoadTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['achievements'];
+
+  /**
+   * A user with permission to administer site configuration.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $user;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->user = $this->drupalCreateUser(['administer site configuration']);
+    $this->drupalLogin($this->user);
+  }
+
+  /**
+   * Tests that the home page loads with a 200 response.
+   */
+  public function testLoad() {
+    $this->drupalGet(Url::fromRoute('<front>'));
+    $this->assertSession()->statusCodeEquals(200);
+  }
+
+}
diff --git a/modules/esha/corporate/composer.json b/modules/esha/corporate/composer.json
new file mode 100644
index 0000000..f8f0e32
--- /dev/null
+++ b/modules/esha/corporate/composer.json
@@ -0,0 +1,14 @@
+{
+  "name": "drupal/corporate",
+  "type": "drupal-module",
+  "description": "Module for Corporate Advisory Board Content Type",
+  "keywords": ["Drupal"],
+  "license": "GPL-2.0+",
+  "homepage": "https://www.drupal.org/project/corporate",
+  "minimum-stability": "dev",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/corporate",
+    "source": "http://cgit.drupalcode.org/corporate"
+  },
+  "require": { }
+}
diff --git a/modules/esha/corporate/config/install/core.entity_form_display.node.corporate_advisory_board.default.yml b/modules/esha/corporate/config/install/core.entity_form_display.node.corporate_advisory_board.default.yml
new file mode 100644
index 0000000..d36c401
--- /dev/null
+++ b/modules/esha/corporate/config/install/core.entity_form_display.node.corporate_advisory_board.default.yml
@@ -0,0 +1,112 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.corporate_advisory_board.field_company_image
+    - field.field.node.corporate_advisory_board.field_company_website
+    - field.field.node.corporate_advisory_board.field_designation
+    - field.field.node.corporate_advisory_board.field_member_image
+    - image.style.thumbnail
+    - node.type.corporate_advisory_board
+  module:
+    - image
+    - link
+    - path
+  enforced:
+    module:
+      - corporate
+id: node.corporate_advisory_board.default
+targetEntityType: node
+bundle: corporate_advisory_board
+mode: default
+content:
+  created:
+    type: datetime_timestamp
+    weight: 10
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  field_company_image:
+    weight: 124
+    settings:
+      progress_indicator: throbber
+      preview_image_style: thumbnail
+    third_party_settings: {  }
+    type: image_image
+    region: content
+  field_company_website:
+    weight: 127
+    settings:
+      placeholder_url: ''
+      placeholder_title: ''
+    third_party_settings: {  }
+    type: link_default
+    region: content
+  field_designation:
+    weight: 126
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: string_textfield
+    region: content
+  field_member_image:
+    weight: 123
+    settings:
+      progress_indicator: throbber
+      preview_image_style: thumbnail
+    third_party_settings: {  }
+    type: image_image
+    region: content
+  langcode:
+    type: language_select
+    weight: 2
+    region: content
+    settings:
+      include_locked: true
+    third_party_settings: {  }
+  path:
+    type: path
+    weight: 30
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  promote:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 15
+    region: content
+    third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
+  sticky:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 16
+    region: content
+    third_party_settings: {  }
+  title:
+    type: string_textfield
+    weight: -5
+    region: content
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  uid:
+    type: entity_reference_autocomplete
+    weight: 5
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    region: content
+    third_party_settings: {  }
+hidden: {  }
diff --git a/modules/esha/corporate/config/install/core.entity_view_display.node.corporate_advisory_board.default.yml b/modules/esha/corporate/config/install/core.entity_view_display.node.corporate_advisory_board.default.yml
new file mode 100644
index 0000000..b543a8c
--- /dev/null
+++ b/modules/esha/corporate/config/install/core.entity_view_display.node.corporate_advisory_board.default.yml
@@ -0,0 +1,66 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.corporate_advisory_board.field_company_image
+    - field.field.node.corporate_advisory_board.field_company_website
+    - field.field.node.corporate_advisory_board.field_designation
+    - field.field.node.corporate_advisory_board.field_member_image
+    - node.type.corporate_advisory_board
+  module:
+    - image
+    - link
+    - user
+  enforced:
+    module:
+      - corporate
+id: node.corporate_advisory_board.default
+targetEntityType: node
+bundle: corporate_advisory_board
+mode: default
+content:
+  field_company_image:
+    weight: 104
+    label: above
+    settings:
+      image_style: ''
+      image_link: ''
+    third_party_settings: {  }
+    type: image
+    region: content
+  field_company_website:
+    weight: 107
+    label: above
+    settings:
+      trim_length: 80
+      url_only: false
+      url_plain: false
+      rel: ''
+      target: ''
+    third_party_settings: {  }
+    type: link
+    region: content
+  field_designation:
+    weight: 106
+    label: above
+    settings:
+      link_to_entity: false
+    third_party_settings: {  }
+    type: string
+    region: content
+  field_member_image:
+    weight: 103
+    label: above
+    settings:
+      image_style: ''
+      image_link: ''
+    third_party_settings: {  }
+    type: image
+    region: content
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  langcode: true
diff --git a/modules/esha/corporate/config/install/core.entity_view_display.node.corporate_advisory_board.teaser.yml b/modules/esha/corporate/config/install/core.entity_view_display.node.corporate_advisory_board.teaser.yml
new file mode 100644
index 0000000..999478f
--- /dev/null
+++ b/modules/esha/corporate/config/install/core.entity_view_display.node.corporate_advisory_board.teaser.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.node.teaser
+    - field.field.node.corporate_advisory_board.field_company_image
+    - field.field.node.corporate_advisory_board.field_company_website
+    - field.field.node.corporate_advisory_board.field_designation
+    - field.field.node.corporate_advisory_board.field_member_image
+    - node.type.corporate_advisory_board
+  module:
+    - user
+  enforced:
+    module:
+      - corporate
+id: node.corporate_advisory_board.teaser
+targetEntityType: node
+bundle: corporate_advisory_board
+mode: teaser
+content:
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  field_company_image: true
+  field_company_website: true
+  field_designation: true
+  field_member_image: true
+  langcode: true
diff --git a/modules/esha/corporate/config/install/core.entity_view_mode.node.teaser.yml b/modules/esha/corporate/config/install/core.entity_view_mode.node.teaser.yml
new file mode 100644
index 0000000..4632edd
--- /dev/null
+++ b/modules/esha/corporate/config/install/core.entity_view_mode.node.teaser.yml
@@ -0,0 +1,15 @@
+uuid: eae4e8eb-df75-49ff-b350-c4bd59679b36
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - corporate
+_core:
+  default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4
+id: node.teaser
+label: Teaser
+targetEntityType: node
+cache: true
diff --git a/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_company_image.yml b/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_company_image.yml
new file mode 100644
index 0000000..f56d0c8
--- /dev/null
+++ b/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_company_image.yml
@@ -0,0 +1,40 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_company_image
+    - node.type.corporate_advisory_board
+  module:
+    - image
+  enforced:
+    module:
+      - corporate
+id: node.corporate_advisory_board.field_company_image
+field_name: field_company_image
+entity_type: node
+bundle: corporate_advisory_board
+label: 'Company Image'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  file_directory: company_images
+  file_extensions: 'png gif jpg jpeg'
+  max_filesize: ''
+  max_resolution: ''
+  min_resolution: ''
+  alt_field: true
+  alt_field_required: true
+  title_field: false
+  title_field_required: false
+  default_image:
+    uuid: ''
+    alt: ''
+    title: ''
+    width: null
+    height: null
+  handler: 'default:file'
+  handler_settings: {  }
+field_type: image
diff --git a/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_company_website.yml b/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_company_website.yml
new file mode 100644
index 0000000..c7ed791
--- /dev/null
+++ b/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_company_website.yml
@@ -0,0 +1,25 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_company_website
+    - node.type.corporate_advisory_board
+  module:
+    - link
+  enforced:
+    module:
+      - corporate
+id: node.corporate_advisory_board.field_company_website
+field_name: field_company_website
+entity_type: node
+bundle: corporate_advisory_board
+label: 'Company Website'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  link_type: 17
+  title: 1
+field_type: link
diff --git a/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_designation.yml b/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_designation.yml
new file mode 100644
index 0000000..0cc1355
--- /dev/null
+++ b/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_designation.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_designation
+    - node.type.corporate_advisory_board
+  enforced:
+    module:
+      - corporate
+id: node.corporate_advisory_board.field_designation
+field_name: field_designation
+entity_type: node
+bundle: corporate_advisory_board
+label: Designation
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings: {  }
+field_type: string
diff --git a/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_member_image.yml b/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_member_image.yml
new file mode 100644
index 0000000..7369e23
--- /dev/null
+++ b/modules/esha/corporate/config/install/field.field.node.corporate_advisory_board.field_member_image.yml
@@ -0,0 +1,40 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_member_image
+    - node.type.corporate_advisory_board
+  module:
+    - image
+  enforced:
+    module:
+      - corporate
+id: node.corporate_advisory_board.field_member_image
+field_name: field_member_image
+entity_type: node
+bundle: corporate_advisory_board
+label: 'Member Image'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  file_directory: member_images
+  file_extensions: 'png gif jpg jpeg'
+  max_filesize: ''
+  max_resolution: ''
+  min_resolution: ''
+  alt_field: true
+  alt_field_required: true
+  title_field: false
+  title_field_required: false
+  default_image:
+    uuid: ''
+    alt: ''
+    title: ''
+    width: null
+    height: null
+  handler: 'default:file'
+  handler_settings: {  }
+field_type: image
diff --git a/modules/esha/corporate/config/install/field.storage.node.field_company_image.yml b/modules/esha/corporate/config/install/field.storage.node.field_company_image.yml
new file mode 100644
index 0000000..04fafea
--- /dev/null
+++ b/modules/esha/corporate/config/install/field.storage.node.field_company_image.yml
@@ -0,0 +1,33 @@
+uuid: 336c9ebe-441b-4df5-a485-f0952792019a
+langcode: en
+status: true
+dependencies:
+  module:
+    - file
+    - image
+    - node
+  enforced:
+    module:
+      - corporate
+id: node.field_company_image
+field_name: field_company_image
+entity_type: node
+type: image
+settings:
+  uri_scheme: public
+  default_image:
+    uuid: ''
+    alt: ''
+    title: ''
+    width: null
+    height: null
+  target_type: file
+  display_field: false
+  display_default: false
+module: image
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/corporate/config/install/field.storage.node.field_company_website.yml b/modules/esha/corporate/config/install/field.storage.node.field_company_website.yml
new file mode 100644
index 0000000..042889c
--- /dev/null
+++ b/modules/esha/corporate/config/install/field.storage.node.field_company_website.yml
@@ -0,0 +1,22 @@
+uuid: 72f4d1c6-fa6c-4cc5-9576-459ec47a6b92
+langcode: en
+status: true
+dependencies:
+  module:
+    - link
+    - node
+  enforced:
+    module:
+      - corporate
+id: node.field_company_website
+field_name: field_company_website
+entity_type: node
+type: link
+settings: {  }
+module: link
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/corporate/config/install/field.storage.node.field_designation.yml b/modules/esha/corporate/config/install/field.storage.node.field_designation.yml
new file mode 100644
index 0000000..290e6bd
--- /dev/null
+++ b/modules/esha/corporate/config/install/field.storage.node.field_designation.yml
@@ -0,0 +1,24 @@
+uuid: d9a05868-ce4b-438b-a119-010249e41825
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - corporate
+id: node.field_designation
+field_name: field_designation
+entity_type: node
+type: string
+settings:
+  max_length: 255
+  is_ascii: false
+  case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/corporate/config/install/field.storage.node.field_member_image.yml b/modules/esha/corporate/config/install/field.storage.node.field_member_image.yml
new file mode 100644
index 0000000..853284c
--- /dev/null
+++ b/modules/esha/corporate/config/install/field.storage.node.field_member_image.yml
@@ -0,0 +1,33 @@
+uuid: 84e3a771-4aa4-4043-9aa2-cd55ab247360
+langcode: en
+status: true
+dependencies:
+  module:
+    - file
+    - image
+    - node
+  enforced:
+    module:
+      - corporate
+id: node.field_member_image
+field_name: field_member_image
+entity_type: node
+type: image
+settings:
+  uri_scheme: public
+  default_image:
+    uuid: a9cd611f-92e3-4762-a504-f6b017a5136c
+    alt: ''
+    title: ''
+    width: 65
+    height: 84
+  target_type: file
+  display_field: false
+  display_default: false
+module: image
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/corporate/config/install/image.style.thumbnail.yml b/modules/esha/corporate/config/install/image.style.thumbnail.yml
new file mode 100644
index 0000000..7389c76
--- /dev/null
+++ b/modules/esha/corporate/config/install/image.style.thumbnail.yml
@@ -0,0 +1,20 @@
+uuid: 253400b6-2e54-4c6a-92ba-9ccb091444e2
+langcode: en
+status: true
+dependencies: 
+  enforced:
+    module:
+      - corporate
+_core:
+  default_config_hash: cCiWdBHgLwj5omG35lsKc4LkW4MBdmcctkVop4ol5x0
+name: thumbnail
+label: 'Thumbnail (100×100)'
+effects:
+  1cfec298-8620-4749-b100-ccb6c4500779:
+    uuid: 1cfec298-8620-4749-b100-ccb6c4500779
+    id: image_scale
+    weight: 0
+    data:
+      width: 100
+      height: 100
+      upscale: false
diff --git a/modules/esha/corporate/config/install/migrate_plus.migration.cab_import.yml b/modules/esha/corporate/config/install/migrate_plus.migration.cab_import.yml
new file mode 100644
index 0000000..fbed94a
--- /dev/null
+++ b/modules/esha/corporate/config/install/migrate_plus.migration.cab_import.yml
@@ -0,0 +1,69 @@
+uuid: 52455ef5-b766-4149-94d0-aa2af3ef7639
+id: cab_import
+label: cab
+migration_group: default
+source:
+  plugin: csv
+  # Full path to the file.
+  path: '/var/www/CSV/corp1.csv'
+  # Column delimiter. Comma (,) by default.
+  delimiter: ','
+  # Field enclosure. Double quotation marks (") by default.
+  enclosure: '"'
+  # The number of rows at the beginning which are not data.
+  header_row_count: 1
+  keys:
+    - id
+  constants:
+    file_source: /var/www/corporate
+    file_dest: 'public://member_images/'
+    file_source2: /var/www/corporate
+    file_dest2: 'public://company_images/'
+process:
+  type:
+    plugin: default_value
+    default_value: corporate_advisory_board
+  source_path:
+    -
+      plugin: skip_on_empty
+      method: process
+      source: memberimg
+    -
+      plugin: concat
+      delimiter: /
+      source:
+        - constants/file_source
+        - memberimg
+  source_path2:
+    -
+      plugin: skip_on_empty
+      method: process
+      source: companyimg
+    -
+      plugin: concat
+      delimiter: /
+      source:
+        - constants/file_source2
+        - companyimg
+  title: title
+  body/value: body
+  body/format:
+    -
+      plugin: default_value
+      default_value: basic_html
+  field_company_website/uri: website 
+  field_designation: designation
+  field_member_image:
+    plugin: file_import
+    source: '@source_path'
+    destination: constants/file_dest
+  field_company_image:
+    plugin: file_import
+    source: '@source_path2'
+    destination: constants/file_dest2
+destination:
+  plugin: 'entity:node'
+  bundle: corporate_advisory_board
+migration_dependencies: 
+  required: { }
+  optional: { }
diff --git a/modules/esha/corporate/config/install/node.type.corporate_advisory_board.yml b/modules/esha/corporate/config/install/node.type.corporate_advisory_board.yml
new file mode 100644
index 0000000..5f30bd4
--- /dev/null
+++ b/modules/esha/corporate/config/install/node.type.corporate_advisory_board.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - menu_ui
+  enforced:
+    module:
+      - corporate
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+name: 'Corporate Advisory Board'
+type: corporate_advisory_board
+description: ''
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/corporate/corporate.info.yml b/modules/esha/corporate/corporate.info.yml
new file mode 100644
index 0000000..305c165
--- /dev/null
+++ b/modules/esha/corporate/corporate.info.yml
@@ -0,0 +1,14 @@
+name: 'corporate'
+type: module
+description: 'Module for Corporate Advisory Board Content Type'
+core: 8.x
+package: 'Custom'
+dependencies:
+  - drupal:menu_ui
+  - drupal:image
+  - drupal:link
+  - drupal:path
+  - drupal:user
+  - drupal:node
+  - drupal:image
+  - drupal:file
\ No newline at end of file
diff --git a/modules/esha/corporate/corporate.install b/modules/esha/corporate/corporate.install
new file mode 100644
index 0000000..2a56fd7
--- /dev/null
+++ b/modules/esha/corporate/corporate.install
@@ -0,0 +1,22 @@
+
+<?php
+/**
+* Implements hook_uninstall().
+*/
+function corporate_uninstall() { //<-- replace “welcome” with your module machine name 
+ // Load services.
+ $queryFactory = \Drupal::service('entity.query');
+ $nodeStorage  = \Drupal::entityManager()->getStorage('node');
+
+ // Query all entity.
+ $query = $queryFactory->get('node')
+// <-- replace event in below line with your content type machine name
+   ->condition('type', 'corporate_advisory_board'); 
+ $nids = $query->execute();
+
+ // Delete entities.
+ if (!empty($nids)) {
+   $entities = $nodeStorage->loadMultiple($nids);
+   $nodeStorage->delete($entities);
+ }
+}
diff --git a/modules/esha/corporate/corporate.module b/modules/esha/corporate/corporate.module
new file mode 100644
index 0000000..de3e265
--- /dev/null
+++ b/modules/esha/corporate/corporate.module
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains corporate.module.
+ */
+
+use Drupal\Core\Routing\RouteMatchInterface;
+
+/**
+ * Implements hook_help().
+ */
+function corporate_help($route_name, RouteMatchInterface $route_match) {
+  switch ($route_name) {
+    // Main module help for the corporate module.
+    case 'help.page.corporate':
+      $output = '';
+      $output .= '<h3>' . t('About') . '</h3>';
+      $output .= '<p>' . t('Module for Corporate Advisory Board Content Type') . '</p>';
+      return $output;
+
+    default:
+  }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function corporate_theme() {
+  return [
+    'corporate' => [
+      'render element' => 'children',
+    ],
+  ];
+}
diff --git a/modules/esha/corporate/templates/corporate.html.twig b/modules/esha/corporate/templates/corporate.html.twig
new file mode 100644
index 0000000..91e43c8
--- /dev/null
+++ b/modules/esha/corporate/templates/corporate.html.twig
@@ -0,0 +1 @@
+<!-- Add you custom twig html here -->
\ No newline at end of file
diff --git a/modules/esha/corporate/tests/src/Functional/LoadTest.php b/modules/esha/corporate/tests/src/Functional/LoadTest.php
new file mode 100644
index 0000000..8e09521
--- /dev/null
+++ b/modules/esha/corporate/tests/src/Functional/LoadTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\Tests\corporate\Functional;
+
+use Drupal\Core\Url;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Simple test to ensure that main page loads with module enabled.
+ *
+ * @group corporate
+ */
+class LoadTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['corporate'];
+
+  /**
+   * A user with permission to administer site configuration.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $user;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->user = $this->drupalCreateUser(['administer site configuration']);
+    $this->drupalLogin($this->user);
+  }
+
+  /**
+   * Tests that the home page loads with a 200 response.
+   */
+  public function testLoad() {
+    $this->drupalGet(Url::fromRoute('<front>'));
+    $this->assertSession()->statusCodeEquals(200);
+  }
+
+}
diff --git a/modules/esha/lab/composer.json b/modules/esha/lab/composer.json
new file mode 100644
index 0000000..70ee9e7
--- /dev/null
+++ b/modules/esha/lab/composer.json
@@ -0,0 +1,14 @@
+{
+  "name": "drupal/lab",
+  "type": "drupal-module",
+  "description": "Module for Lab Content Tyoe",
+  "keywords": ["Drupal"],
+  "license": "GPL-2.0+",
+  "homepage": "https://www.drupal.org/project/lab",
+  "minimum-stability": "dev",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/lab",
+    "source": "http://cgit.drupalcode.org/lab"
+  },
+  "require": { }
+}
diff --git a/modules/esha/lab/config/install/core.entity_form_display.node.lab.default.yml b/modules/esha/lab/config/install/core.entity_form_display.node.lab.default.yml
new file mode 100644
index 0000000..71f1994
--- /dev/null
+++ b/modules/esha/lab/config/install/core.entity_form_display.node.lab.default.yml
@@ -0,0 +1,138 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.lab.field_description_
+    - field.field.node.lab.field_faculty_e_mail
+    - field.field.node.lab.field_faculty_incharge
+    - field.field.node.lab.field_faculty_phone_no
+    - field.field.node.lab.field_hardware_software_details
+    - field.field.node.lab.field_location
+    - field.field.node.lab.field_programmer_name
+    - node.type.lab
+  module:
+    - paragraphs
+    - path
+id: node.lab.default
+targetEntityType: node
+bundle: lab
+mode: default
+content:
+  created:
+    type: datetime_timestamp
+    weight: 10
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  field_description_:
+    weight: 129
+    settings:
+      rows: 5
+      placeholder: ''
+    third_party_settings: {  }
+    type: string_textarea
+    region: content
+  field_faculty_e_mail:
+    weight: 127
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: email_default
+    region: content
+  field_faculty_incharge:
+    weight: 124
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: entity_reference_autocomplete
+    region: content
+  field_faculty_phone_no:
+    weight: 128
+    settings:
+      placeholder: ''
+    third_party_settings: {  }
+    type: number
+    region: content
+  field_hardware_software_details:
+    type: entity_reference_paragraphs
+    weight: 126
+    settings:
+      title: Paragraph
+      title_plural: Paragraphs
+      edit_mode: open
+      add_mode: dropdown
+      form_display_mode: default
+      default_paragraph_type: ''
+    third_party_settings: {  }
+    region: content
+  field_location:
+    weight: 122
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: string_textfield
+    region: content
+  field_programmer_name:
+    weight: 125
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: string_textfield
+    region: content
+  langcode:
+    type: language_select
+    weight: 2
+    region: content
+    settings:
+      include_locked: true
+    third_party_settings: {  }
+  path:
+    type: path
+    weight: 30
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  promote:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 15
+    region: content
+    third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
+  sticky:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 16
+    region: content
+    third_party_settings: {  }
+  title:
+    type: string_textfield
+    weight: -5
+    region: content
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  uid:
+    type: entity_reference_autocomplete
+    weight: 5
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    region: content
+    third_party_settings: {  }
+hidden: {  }
diff --git a/modules/esha/lab/config/install/core.entity_view_display.node.lab.default.yml b/modules/esha/lab/config/install/core.entity_view_display.node.lab.default.yml
new file mode 100644
index 0000000..d2e7fb7
--- /dev/null
+++ b/modules/esha/lab/config/install/core.entity_view_display.node.lab.default.yml
@@ -0,0 +1,83 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.lab.field_description_
+    - field.field.node.lab.field_faculty_e_mail
+    - field.field.node.lab.field_faculty_incharge
+    - field.field.node.lab.field_faculty_phone_no
+    - field.field.node.lab.field_hardware_software_details
+    - field.field.node.lab.field_location
+    - field.field.node.lab.field_programmer_name
+    - node.type.lab
+  module:
+    - entity_reference_revisions
+    - user
+id: node.lab.default
+targetEntityType: node
+bundle: lab
+mode: default
+content:
+  field_description_:
+    weight: 109
+    label: above
+    settings: {  }
+    third_party_settings: {  }
+    type: basic_string
+    region: content
+  field_faculty_e_mail:
+    weight: 107
+    label: above
+    settings: {  }
+    third_party_settings: {  }
+    type: basic_string
+    region: content
+  field_faculty_incharge:
+    weight: 104
+    label: above
+    settings:
+      link: true
+    third_party_settings: {  }
+    type: entity_reference_label
+    region: content
+  field_faculty_phone_no:
+    weight: 108
+    label: above
+    settings:
+      thousand_separator: ''
+      prefix_suffix: true
+    third_party_settings: {  }
+    type: number_integer
+    region: content
+  field_hardware_software_details:
+    type: entity_reference_revisions_entity_view
+    weight: 106
+    label: above
+    settings:
+      view_mode: default
+      link: ''
+    third_party_settings: {  }
+    region: content
+  field_location:
+    weight: 102
+    label: above
+    settings:
+      link_to_entity: false
+    third_party_settings: {  }
+    type: string
+    region: content
+  field_programmer_name:
+    weight: 105
+    label: above
+    settings:
+      link_to_entity: false
+    third_party_settings: {  }
+    type: string
+    region: content
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  langcode: true
diff --git a/modules/esha/lab/config/install/core.entity_view_display.node.lab.teaser.yml b/modules/esha/lab/config/install/core.entity_view_display.node.lab.teaser.yml
new file mode 100644
index 0000000..41ceb2a
--- /dev/null
+++ b/modules/esha/lab/config/install/core.entity_view_display.node.lab.teaser.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.node.teaser
+    - field.field.node.lab.field_location
+    - node.type.lab
+  module:
+    - user
+id: node.lab.teaser
+targetEntityType: node
+bundle: lab
+mode: teaser
+content:
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  field_location: true
+  langcode: true
diff --git a/modules/esha/lab/config/install/core.entity_view_mode.node.teaser.yml b/modules/esha/lab/config/install/core.entity_view_mode.node.teaser.yml
new file mode 100644
index 0000000..fb7a35a
--- /dev/null
+++ b/modules/esha/lab/config/install/core.entity_view_mode.node.teaser.yml
@@ -0,0 +1,12 @@
+uuid: eae4e8eb-df75-49ff-b350-c4bd59679b36
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+_core:
+  default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4
+id: node.teaser
+label: Teaser
+targetEntityType: node
+cache: true
diff --git a/modules/esha/lab/config/install/field.field.node.lab.field_description_.yml b/modules/esha/lab/config/install/field.field.node.lab.field_description_.yml
new file mode 100644
index 0000000..d604ec4
--- /dev/null
+++ b/modules/esha/lab/config/install/field.field.node.lab.field_description_.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_description_
+    - node.type.lab
+id: node.lab.field_description_
+field_name: field_description_
+entity_type: node
+bundle: lab
+label: Description
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings: {  }
+field_type: string_long
diff --git a/modules/esha/lab/config/install/field.field.node.lab.field_faculty_e_mail.yml b/modules/esha/lab/config/install/field.field.node.lab.field_faculty_e_mail.yml
new file mode 100644
index 0000000..39dfaeb
--- /dev/null
+++ b/modules/esha/lab/config/install/field.field.node.lab.field_faculty_e_mail.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_faculty_e_mail
+    - node.type.lab
+id: node.lab.field_faculty_e_mail
+field_name: field_faculty_e_mail
+entity_type: node
+bundle: lab
+label: 'Faculty E-Mail'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings: {  }
+field_type: email
diff --git a/modules/esha/lab/config/install/field.field.node.lab.field_faculty_incharge.yml b/modules/esha/lab/config/install/field.field.node.lab.field_faculty_incharge.yml
new file mode 100644
index 0000000..21bfc1c
--- /dev/null
+++ b/modules/esha/lab/config/install/field.field.node.lab.field_faculty_incharge.yml
@@ -0,0 +1,27 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_faculty_incharge
+    - node.type.fac_page
+    - node.type.lab
+id: node.lab.field_faculty_incharge
+field_name: field_faculty_incharge
+entity_type: node
+bundle: lab
+label: 'Faculty Incharge'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:node'
+  handler_settings:
+    target_bundles:
+      fac_page: fac_page
+    sort:
+      field: _none
+    auto_create: false
+    auto_create_bundle: ''
+field_type: entity_reference
diff --git a/modules/esha/lab/config/install/field.field.node.lab.field_faculty_phone_no.yml b/modules/esha/lab/config/install/field.field.node.lab.field_faculty_phone_no.yml
new file mode 100644
index 0000000..9e0b7bd
--- /dev/null
+++ b/modules/esha/lab/config/install/field.field.node.lab.field_faculty_phone_no.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_faculty_phone_no
+    - node.type.lab
+id: node.lab.field_faculty_phone_no
+field_name: field_faculty_phone_no
+entity_type: node
+bundle: lab
+label: 'Faculty Phone No'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  min: null
+  max: null
+  prefix: ''
+  suffix: ''
+field_type: integer
diff --git a/modules/esha/lab/config/install/field.field.node.lab.field_hardware_software_details.yml b/modules/esha/lab/config/install/field.field.node.lab.field_hardware_software_details.yml
new file mode 100644
index 0000000..a51d802
--- /dev/null
+++ b/modules/esha/lab/config/install/field.field.node.lab.field_hardware_software_details.yml
@@ -0,0 +1,33 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_hardware_software_details
+    - node.type.lab
+    - paragraphs.paragraphs_type.hardware_and_software
+  module:
+    - entity_reference_revisions
+id: node.lab.field_hardware_software_details
+field_name: field_hardware_software_details
+entity_type: node
+bundle: lab
+label: 'Hardware Software Details'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:paragraph'
+  handler_settings:
+    negate: 0
+    target_bundles:
+      hardware_and_software: hardware_and_software
+    target_bundles_drag_drop:
+      hardware_and_software:
+        enabled: true
+        weight: 3
+      r_d_projects:
+        weight: 4
+        enabled: false
+field_type: entity_reference_revisions
diff --git a/modules/esha/lab/config/install/field.field.node.lab.field_location.yml b/modules/esha/lab/config/install/field.field.node.lab.field_location.yml
new file mode 100644
index 0000000..d1eb382
--- /dev/null
+++ b/modules/esha/lab/config/install/field.field.node.lab.field_location.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_location
+    - node.type.lab
+id: node.lab.field_location
+field_name: field_location
+entity_type: node
+bundle: lab
+label: Location
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings: {  }
+field_type: string
diff --git a/modules/esha/lab/config/install/field.field.node.lab.field_programmer_name.yml b/modules/esha/lab/config/install/field.field.node.lab.field_programmer_name.yml
new file mode 100644
index 0000000..d192d1c
--- /dev/null
+++ b/modules/esha/lab/config/install/field.field.node.lab.field_programmer_name.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_programmer_name
+    - node.type.lab
+id: node.lab.field_programmer_name
+field_name: field_programmer_name
+entity_type: node
+bundle: lab
+label: 'Programmer Name'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings: {  }
+field_type: string
diff --git a/modules/esha/lab/config/install/field.storage.node.field_description_.yml b/modules/esha/lab/config/install/field.storage.node.field_description_.yml
new file mode 100644
index 0000000..c156a3f
--- /dev/null
+++ b/modules/esha/lab/config/install/field.storage.node.field_description_.yml
@@ -0,0 +1,19 @@
+uuid: 7083d7bf-4a82-442a-b247-b5e3efefee5f
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+id: node.field_description_
+field_name: field_description_
+entity_type: node
+type: string_long
+settings:
+  case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/lab/config/install/field.storage.node.field_faculty_e_mail.yml b/modules/esha/lab/config/install/field.storage.node.field_faculty_e_mail.yml
new file mode 100644
index 0000000..de20bf6
--- /dev/null
+++ b/modules/esha/lab/config/install/field.storage.node.field_faculty_e_mail.yml
@@ -0,0 +1,18 @@
+uuid: a72bd7c5-3bcc-469c-bc4d-7e53dcdecbfc
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+id: node.field_faculty_e_mail
+field_name: field_faculty_e_mail
+entity_type: node
+type: email
+settings: {  }
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/lab/config/install/field.storage.node.field_faculty_incharge.yml b/modules/esha/lab/config/install/field.storage.node.field_faculty_incharge.yml
new file mode 100644
index 0000000..0740b62
--- /dev/null
+++ b/modules/esha/lab/config/install/field.storage.node.field_faculty_incharge.yml
@@ -0,0 +1,19 @@
+uuid: 72d5df56-23f1-40ee-9cdb-47ce8ccd35dd
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+id: node.field_faculty_incharge
+field_name: field_faculty_incharge
+entity_type: node
+type: entity_reference
+settings:
+  target_type: node
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/lab/config/install/field.storage.node.field_faculty_phone_no.yml b/modules/esha/lab/config/install/field.storage.node.field_faculty_phone_no.yml
new file mode 100644
index 0000000..bdf060a
--- /dev/null
+++ b/modules/esha/lab/config/install/field.storage.node.field_faculty_phone_no.yml
@@ -0,0 +1,20 @@
+uuid: cb625a44-0a19-4b8f-ba64-ecccd03f85fb
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+id: node.field_faculty_phone_no
+field_name: field_faculty_phone_no
+entity_type: node
+type: integer
+settings:
+  unsigned: false
+  size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/lab/config/install/field.storage.node.field_hardware_software_details.yml b/modules/esha/lab/config/install/field.storage.node.field_hardware_software_details.yml
new file mode 100644
index 0000000..09fbf27
--- /dev/null
+++ b/modules/esha/lab/config/install/field.storage.node.field_hardware_software_details.yml
@@ -0,0 +1,21 @@
+uuid: 40b4ca5d-093c-45da-8170-51f3bee83c1b
+langcode: en
+status: true
+dependencies:
+  module:
+    - entity_reference_revisions
+    - node
+    - paragraphs
+id: node.field_hardware_software_details
+field_name: field_hardware_software_details
+entity_type: node
+type: entity_reference_revisions
+settings:
+  target_type: paragraph
+module: entity_reference_revisions
+locked: false
+cardinality: -1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/lab/config/install/field.storage.node.field_location.yml b/modules/esha/lab/config/install/field.storage.node.field_location.yml
new file mode 100644
index 0000000..d5ce75d
--- /dev/null
+++ b/modules/esha/lab/config/install/field.storage.node.field_location.yml
@@ -0,0 +1,21 @@
+uuid: 55b23e0b-33a5-4ed4-9d9a-17ee0abf3440
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+id: node.field_location
+field_name: field_location
+entity_type: node
+type: string
+settings:
+  max_length: 300
+  is_ascii: false
+  case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/lab/config/install/field.storage.node.field_programmer_name.yml b/modules/esha/lab/config/install/field.storage.node.field_programmer_name.yml
new file mode 100644
index 0000000..b5c1a4c
--- /dev/null
+++ b/modules/esha/lab/config/install/field.storage.node.field_programmer_name.yml
@@ -0,0 +1,21 @@
+uuid: 6db8388e-26d0-489f-a2c8-b97aeaba5951
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+id: node.field_programmer_name
+field_name: field_programmer_name
+entity_type: node
+type: string
+settings:
+  max_length: 255
+  is_ascii: false
+  case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/lab/config/install/node.type.fac_page.yml b/modules/esha/lab/config/install/node.type.fac_page.yml
new file mode 100644
index 0000000..47f8ffb
--- /dev/null
+++ b/modules/esha/lab/config/install/node.type.fac_page.yml
@@ -0,0 +1,23 @@
+uuid: b7471e78-83f0-4359-9512-d4a8f02c2218
+langcode: en
+status: true
+dependencies:
+  enforced:
+    module:
+      - acadmix_faculty
+  module:
+    - menu_ui
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+_core:
+  default_config_hash: yZnGgm-oTEuH3Qz8VcW49f94qFn-pYOYZdrX601an0U
+name: 'Faculty Page'
+type: fac_page
+description: 'Content template for opening Faculty Page'
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/lab/config/install/node.type.lab.yml b/modules/esha/lab/config/install/node.type.lab.yml
new file mode 100644
index 0000000..e5a2e2a
--- /dev/null
+++ b/modules/esha/lab/config/install/node.type.lab.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - menu_ui
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+name: Lab
+type: lab
+description: ''
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/lab/config/install/paragraphs.paragraphs_type.hardware_and_software.yml b/modules/esha/lab/config/install/paragraphs.paragraphs_type.hardware_and_software.yml
new file mode 100644
index 0000000..f7b105e
--- /dev/null
+++ b/modules/esha/lab/config/install/paragraphs.paragraphs_type.hardware_and_software.yml
@@ -0,0 +1,9 @@
+uuid: c3df85d3-cc1d-408b-b115-17a70677f6d8
+langcode: en
+status: true
+dependencies: {  }
+id: hardware_and_software
+label: 'Hardware and Software'
+icon_uuid: null
+description: ''
+behavior_plugins: {  }
diff --git a/modules/esha/lab/lab.info.yml b/modules/esha/lab/lab.info.yml
new file mode 100644
index 0000000..8507cd7
--- /dev/null
+++ b/modules/esha/lab/lab.info.yml
@@ -0,0 +1,12 @@
+name: 'lab'
+type: module
+description: 'Module for Lab Content Tyoe'
+core: 8.x
+package: 'Custom'
+dependencies:
+    - drupal:paragraphs
+    - drupal:path
+    - drupal:entity_reference_revisions
+    - drupal:user
+    - drupal:node
+    - drupal:menu_ui
diff --git a/modules/esha/lab/lab.install b/modules/esha/lab/lab.install
new file mode 100644
index 0000000..376861b
--- /dev/null
+++ b/modules/esha/lab/lab.install
@@ -0,0 +1,22 @@
+
+<?php
+/**
+* Implements hook_uninstall().
+*/
+function lab_uninstall() { //<-- replace “welcome” with your module machine name 
+ // Load services.
+ $queryFactory = \Drupal::service('entity.query');
+ $nodeStorage  = \Drupal::entityManager()->getStorage('node');
+
+ // Query all entity.
+ $query = $queryFactory->get('node')
+// <-- replace event in below line with your content type machine name
+   ->condition('type', 'lab'); 
+ $nids = $query->execute();
+
+ // Delete entities.
+ if (!empty($nids)) {
+   $entities = $nodeStorage->loadMultiple($nids);
+   $nodeStorage->delete($entities);
+ }
+}
diff --git a/modules/esha/lab/lab.module b/modules/esha/lab/lab.module
new file mode 100644
index 0000000..65a0b7e
--- /dev/null
+++ b/modules/esha/lab/lab.module
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains lab.module.
+ */
+
+use Drupal\Core\Routing\RouteMatchInterface;
+
+/**
+ * Implements hook_help().
+ */
+function lab_help($route_name, RouteMatchInterface $route_match) {
+  switch ($route_name) {
+    // Main module help for the lab module.
+    case 'help.page.lab':
+      $output = '';
+      $output .= '<h3>' . t('About') . '</h3>';
+      $output .= '<p>' . t('Module for Lab Content Tyoe') . '</p>';
+      return $output;
+
+    default:
+  }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function lab_theme() {
+  return [
+    'lab' => [
+      'render element' => 'children',
+    ],
+  ];
+}
diff --git a/modules/esha/lab/templates/lab.html.twig b/modules/esha/lab/templates/lab.html.twig
new file mode 100644
index 0000000..91e43c8
--- /dev/null
+++ b/modules/esha/lab/templates/lab.html.twig
@@ -0,0 +1 @@
+<!-- Add you custom twig html here -->
\ No newline at end of file
diff --git a/modules/esha/lab/tests/src/Functional/LoadTest.php b/modules/esha/lab/tests/src/Functional/LoadTest.php
new file mode 100644
index 0000000..918be07
--- /dev/null
+++ b/modules/esha/lab/tests/src/Functional/LoadTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\Tests\lab\Functional;
+
+use Drupal\Core\Url;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Simple test to ensure that main page loads with module enabled.
+ *
+ * @group lab
+ */
+class LoadTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['lab'];
+
+  /**
+   * A user with permission to administer site configuration.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $user;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->user = $this->drupalCreateUser(['administer site configuration']);
+    $this->drupalLogin($this->user);
+  }
+
+  /**
+   * Tests that the home page loads with a 200 response.
+   */
+  public function testLoad() {
+    $this->drupalGet(Url::fromRoute('<front>'));
+    $this->assertSession()->statusCodeEquals(200);
+  }
+
+}
diff --git a/modules/esha/labmanual/composer.json b/modules/esha/labmanual/composer.json
new file mode 100644
index 0000000..babdf95
--- /dev/null
+++ b/modules/esha/labmanual/composer.json
@@ -0,0 +1,14 @@
+{
+  "name": "drupal/labmanual",
+  "type": "drupal-module",
+  "description": "Module for Lab Manual Content Type",
+  "keywords": ["Drupal"],
+  "license": "GPL-2.0+",
+  "homepage": "https://www.drupal.org/project/labmanual",
+  "minimum-stability": "dev",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/labmanual",
+    "source": "http://cgit.drupalcode.org/labmanual"
+  },
+  "require": { }
+}
diff --git a/modules/esha/labmanual/config/install/core.entity_form_display.node.lab_manual.default.yml b/modules/esha/labmanual/config/install/core.entity_form_display.node.lab_manual.default.yml
new file mode 100644
index 0000000..084c912
--- /dev/null
+++ b/modules/esha/labmanual/config/install/core.entity_form_display.node.lab_manual.default.yml
@@ -0,0 +1,91 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.lab_manual.field_description
+    - field.field.node.lab_manual.field_manual
+    - node.type.lab_manual
+  module:
+    - file
+    - path
+  enforced:
+    module:
+      - labmanual
+id: node.lab_manual.default
+targetEntityType: node
+bundle: lab_manual
+mode: default
+content:
+  created:
+    type: datetime_timestamp
+    weight: 10
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  field_description:
+    weight: 122
+    settings:
+      rows: 5
+      placeholder: ''
+    third_party_settings: {  }
+    type: string_textarea
+    region: content
+  field_manual:
+    weight: 123
+    settings:
+      progress_indicator: throbber
+    third_party_settings: {  }
+    type: file_generic
+    region: content
+  langcode:
+    type: language_select
+    weight: 2
+    region: content
+    settings:
+      include_locked: true
+    third_party_settings: {  }
+  path:
+    type: path
+    weight: 30
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  promote:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 15
+    region: content
+    third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
+  sticky:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 16
+    region: content
+    third_party_settings: {  }
+  title:
+    type: string_textfield
+    weight: -5
+    region: content
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  uid:
+    type: entity_reference_autocomplete
+    weight: 5
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    region: content
+    third_party_settings: {  }
+hidden: {  }
diff --git a/modules/esha/labmanual/config/install/core.entity_view_display.node.lab_manual.default.yml b/modules/esha/labmanual/config/install/core.entity_view_display.node.lab_manual.default.yml
new file mode 100644
index 0000000..a04bdb4
--- /dev/null
+++ b/modules/esha/labmanual/config/install/core.entity_view_display.node.lab_manual.default.yml
@@ -0,0 +1,40 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.lab_manual.field_description
+    - field.field.node.lab_manual.field_manual
+    - node.type.lab_manual
+  module:
+    - file
+    - user
+  enforced:
+    module:
+      - labmanual
+id: node.lab_manual.default
+targetEntityType: node
+bundle: lab_manual
+mode: default
+content:
+  field_description:
+    weight: 102
+    label: above
+    settings: {  }
+    third_party_settings: {  }
+    type: basic_string
+    region: content
+  field_manual:
+    weight: 103
+    label: above
+    settings:
+      use_description_as_link_text: true
+    third_party_settings: {  }
+    type: file_default
+    region: content
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  langcode: true
diff --git a/modules/esha/labmanual/config/install/core.entity_view_display.node.lab_manual.teaser.yml b/modules/esha/labmanual/config/install/core.entity_view_display.node.lab_manual.teaser.yml
new file mode 100644
index 0000000..d083bbc
--- /dev/null
+++ b/modules/esha/labmanual/config/install/core.entity_view_display.node.lab_manual.teaser.yml
@@ -0,0 +1,27 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.node.teaser
+    - field.field.node.lab_manual.field_description
+    - field.field.node.lab_manual.field_manual
+    - node.type.lab_manual
+  module:
+    - user
+  enforced:
+    module:
+      - labmanual
+id: node.lab_manual.teaser
+targetEntityType: node
+bundle: lab_manual
+mode: teaser
+content:
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  field_description: true
+  field_manual: true
+  langcode: true
diff --git a/modules/esha/labmanual/config/install/core.entity_view_mode.node.teaser.yml b/modules/esha/labmanual/config/install/core.entity_view_mode.node.teaser.yml
new file mode 100644
index 0000000..ce0398e
--- /dev/null
+++ b/modules/esha/labmanual/config/install/core.entity_view_mode.node.teaser.yml
@@ -0,0 +1,15 @@
+uuid: eae4e8eb-df75-49ff-b350-c4bd59679b36
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - labmanual
+_core:
+  default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4
+id: node.teaser
+label: Teaser
+targetEntityType: node
+cache: true
diff --git a/modules/esha/labmanual/config/install/field.field.node.lab_manual.field_description.yml b/modules/esha/labmanual/config/install/field.field.node.lab_manual.field_description.yml
new file mode 100644
index 0000000..e31a4ba
--- /dev/null
+++ b/modules/esha/labmanual/config/install/field.field.node.lab_manual.field_description.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_description
+    - node.type.lab_manual
+  enforced:
+    module:
+      - labmanual
+id: node.lab_manual.field_description
+field_name: field_description
+entity_type: node
+bundle: lab_manual
+label: Description
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings: {  }
+field_type: string_long
diff --git a/modules/esha/labmanual/config/install/field.field.node.lab_manual.field_manual.yml b/modules/esha/labmanual/config/install/field.field.node.lab_manual.field_manual.yml
new file mode 100644
index 0000000..b953977
--- /dev/null
+++ b/modules/esha/labmanual/config/install/field.field.node.lab_manual.field_manual.yml
@@ -0,0 +1,29 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_manual
+    - node.type.lab_manual
+  module:
+    - file
+  enforced:
+    module:
+      - labmanual
+id: node.lab_manual.field_manual
+field_name: field_manual
+entity_type: node
+bundle: lab_manual
+label: Manual
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  file_directory: lab_manuals
+  file_extensions: pdf
+  max_filesize: ''
+  description_field: false
+  handler: 'default:file'
+  handler_settings: {  }
+field_type: file
diff --git a/modules/esha/labmanual/config/install/field.storage.node.field_description.yml b/modules/esha/labmanual/config/install/field.storage.node.field_description.yml
new file mode 100644
index 0000000..f272899
--- /dev/null
+++ b/modules/esha/labmanual/config/install/field.storage.node.field_description.yml
@@ -0,0 +1,22 @@
+uuid: 2607b4e4-518c-4aff-9b49-5f398e718487
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - labmanual
+id: node.field_description
+field_name: field_description
+entity_type: node
+type: string_long
+settings:
+  case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/labmanual/config/install/field.storage.node.field_manual.yml b/modules/esha/labmanual/config/install/field.storage.node.field_manual.yml
new file mode 100644
index 0000000..9070112
--- /dev/null
+++ b/modules/esha/labmanual/config/install/field.storage.node.field_manual.yml
@@ -0,0 +1,26 @@
+uuid: 9772805f-ffb2-443f-afdd-0bc6dfd48416
+langcode: en
+status: true
+dependencies:
+  module:
+    - file
+    - node
+  enforced:
+    module:
+      - labmanual
+id: node.field_manual
+field_name: field_manual
+entity_type: node
+type: file
+settings:
+  display_field: false
+  display_default: false
+  uri_scheme: public
+  target_type: file
+module: file
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/labmanual/config/install/migrate_plus.migration.labmanuals_import.yml b/modules/esha/labmanual/config/install/migrate_plus.migration.labmanuals_import.yml
new file mode 100644
index 0000000..e6e6a38
--- /dev/null
+++ b/modules/esha/labmanual/config/install/migrate_plus.migration.labmanuals_import.yml
@@ -0,0 +1,51 @@
+uuid: c04b2ca4-cd30-4aa3-b742-d558a856d094
+id: labmanuals_import
+label: labmanual
+migration_group: default
+source:
+  plugin: csv
+  # Full path to the file.
+  path: '/var/www/CSV/LabManual.csv'
+  # Column delimiter. Comma (,) by default.
+  delimiter: ','
+  # Field enclosure. Double quotation marks (") by default.
+  enclosure: '"'
+  # The number of rows at the beginning which are not data.
+  header_row_count: 1
+  keys:
+    - id
+  constants:
+    file_source: /var/www/LabManuals
+    file_dest: 'public://lab_manuals/'
+process:
+  type:
+    plugin: default_value
+    default_value: lab_manual
+  source_path:
+    -
+      plugin: skip_on_empty
+      method: process
+      source: manual
+    -
+      plugin: concat
+      delimiter: /
+      source:
+        - constants/file_source
+        - manual
+  title: title
+  body/value: body
+  body/format:
+    -
+      plugin: default_value
+      default_value: basic_html
+  field_description: description
+  field_manual:
+    plugin: file_import
+    source: '@source_path'
+    destination: constants/file_dest
+destination:
+  plugin: 'entity:node'
+  bundle: lab_manual
+migration_dependencies: 
+  required: { }
+  optional: { }
diff --git a/modules/esha/labmanual/config/install/node.type.lab_manual.yml b/modules/esha/labmanual/config/install/node.type.lab_manual.yml
new file mode 100644
index 0000000..f624421
--- /dev/null
+++ b/modules/esha/labmanual/config/install/node.type.lab_manual.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - menu_ui
+  enforced:
+    module:
+      - labmanual
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+name: 'Lab Manual'
+type: lab_manual
+description: ''
+help: ''
+new_revision: false
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/labmanual/labmanual.info.yml b/modules/esha/labmanual/labmanual.info.yml
new file mode 100644
index 0000000..9bfe438
--- /dev/null
+++ b/modules/esha/labmanual/labmanual.info.yml
@@ -0,0 +1,12 @@
+name: 'labmanual'
+type: module
+description: 'Module for Lab Manual Content Type'
+core: 8.x
+package: 'Custom'
+dependencies:
+  - drupal:file
+  - drupal:path
+  - drupal:user
+  - drupal:node
+  - drupal:file
+  - drupal:menu_ui
\ No newline at end of file
diff --git a/modules/esha/labmanual/labmanual.install b/modules/esha/labmanual/labmanual.install
new file mode 100644
index 0000000..e2c0ed3
--- /dev/null
+++ b/modules/esha/labmanual/labmanual.install
@@ -0,0 +1,22 @@
+
+<?php
+/**
+* Implements hook_uninstall().
+*/
+function labmanual_uninstall() { //<-- replace “welcome” with your module machine name 
+ // Load services.
+ $queryFactory = \Drupal::service('entity.query');
+ $nodeStorage  = \Drupal::entityManager()->getStorage('node');
+
+ // Query all entity.
+ $query = $queryFactory->get('node')
+// <-- replace event in below line with your content type machine name
+   ->condition('type', 'lab_manual'); 
+ $nids = $query->execute();
+
+ // Delete entities.
+ if (!empty($nids)) {
+   $entities = $nodeStorage->loadMultiple($nids);
+   $nodeStorage->delete($entities);
+ }
+}
diff --git a/modules/esha/labmanual/labmanual.module b/modules/esha/labmanual/labmanual.module
new file mode 100644
index 0000000..5782054
--- /dev/null
+++ b/modules/esha/labmanual/labmanual.module
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains labmanual.module.
+ */
+
+use Drupal\Core\Routing\RouteMatchInterface;
+
+/**
+ * Implements hook_help().
+ */
+function labmanual_help($route_name, RouteMatchInterface $route_match) {
+  switch ($route_name) {
+    // Main module help for the labmanual module.
+    case 'help.page.labmanual':
+      $output = '';
+      $output .= '<h3>' . t('About') . '</h3>';
+      $output .= '<p>' . t('Module for Lab Manual Content Type') . '</p>';
+      return $output;
+
+    default:
+  }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function labmanual_theme() {
+  return [
+    'labmanual' => [
+      'render element' => 'children',
+    ],
+  ];
+}
diff --git a/modules/esha/labmanual/templates/labmanual.html.twig b/modules/esha/labmanual/templates/labmanual.html.twig
new file mode 100644
index 0000000..91e43c8
--- /dev/null
+++ b/modules/esha/labmanual/templates/labmanual.html.twig
@@ -0,0 +1 @@
+<!-- Add you custom twig html here -->
\ No newline at end of file
diff --git a/modules/esha/labmanual/tests/src/Functional/LoadTest.php b/modules/esha/labmanual/tests/src/Functional/LoadTest.php
new file mode 100644
index 0000000..e548812
--- /dev/null
+++ b/modules/esha/labmanual/tests/src/Functional/LoadTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\Tests\labmanual\Functional;
+
+use Drupal\Core\Url;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Simple test to ensure that main page loads with module enabled.
+ *
+ * @group labmanual
+ */
+class LoadTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['labmanual'];
+
+  /**
+   * A user with permission to administer site configuration.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $user;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->user = $this->drupalCreateUser(['administer site configuration']);
+    $this->drupalLogin($this->user);
+  }
+
+  /**
+   * Tests that the home page loads with a 200 response.
+   */
+  public function testLoad() {
+    $this->drupalGet(Url::fromRoute('<front>'));
+    $this->assertSession()->statusCodeEquals(200);
+  }
+
+}
diff --git a/modules/esha/onlinecourse/composer.json b/modules/esha/onlinecourse/composer.json
new file mode 100644
index 0000000..9d4a149
--- /dev/null
+++ b/modules/esha/onlinecourse/composer.json
@@ -0,0 +1,14 @@
+{
+  "name": "drupal/onlinecourse",
+  "type": "drupal-module",
+  "description": "My Awesome Module",
+  "keywords": ["Drupal"],
+  "license": "GPL-2.0+",
+  "homepage": "https://www.drupal.org/project/onlinecourse",
+  "minimum-stability": "dev",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/onlinecourse",
+    "source": "http://cgit.drupalcode.org/onlinecourse"
+  },
+  "require": { }
+}
diff --git a/modules/esha/onlinecourse/config/install/core.entity_form_display.node.online_course.default.yml b/modules/esha/onlinecourse/config/install/core.entity_form_display.node.online_course.default.yml
new file mode 100644
index 0000000..86b561a
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/core.entity_form_display.node.online_course.default.yml
@@ -0,0 +1,99 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.online_course.field_faculty_name
+    - field.field.node.online_course.field_link_to_cour
+    - field.field.node.online_course.field_offered_by
+    - node.type.online_course
+  module:
+    - link
+    - path
+id: node.online_course.default
+targetEntityType: node
+bundle: online_course
+mode: default
+content:
+  created:
+    type: datetime_timestamp
+    weight: 10
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  field_faculty_name:
+    weight: 122
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: entity_reference_autocomplete
+    region: content
+  field_link_to_cour:
+    weight: 124
+    settings:
+      placeholder_url: ''
+      placeholder_title: ''
+    third_party_settings: {  }
+    type: link_default
+    region: content
+  field_offered_by:
+    weight: 123
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: string_textfield
+    region: content
+  langcode:
+    type: language_select
+    weight: 2
+    region: content
+    settings:
+      include_locked: true
+    third_party_settings: {  }
+  path:
+    type: path
+    weight: 30
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  promote:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 15
+    region: content
+    third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
+  sticky:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 16
+    region: content
+    third_party_settings: {  }
+  title:
+    type: string_textfield
+    weight: -5
+    region: content
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  uid:
+    type: entity_reference_autocomplete
+    weight: 5
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    region: content
+    third_party_settings: {  }
+hidden: {  }
diff --git a/modules/esha/onlinecourse/config/install/core.entity_view_display.node.online_course.default.yml b/modules/esha/onlinecourse/config/install/core.entity_view_display.node.online_course.default.yml
new file mode 100644
index 0000000..a774ce8
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/core.entity_view_display.node.online_course.default.yml
@@ -0,0 +1,51 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.online_course.field_faculty_name
+    - field.field.node.online_course.field_link_to_cour
+    - field.field.node.online_course.field_offered_by
+    - node.type.online_course
+  module:
+    - link
+    - user
+id: node.online_course.default
+targetEntityType: node
+bundle: online_course
+mode: default
+content:
+  field_faculty_name:
+    weight: 102
+    label: above
+    settings:
+      link: true
+    third_party_settings: {  }
+    type: entity_reference_label
+    region: content
+  field_link_to_cour:
+    weight: 104
+    label: above
+    settings:
+      trim_length: 80
+      url_only: false
+      url_plain: false
+      rel: ''
+      target: ''
+    third_party_settings: {  }
+    type: link
+    region: content
+  field_offered_by:
+    weight: 103
+    label: above
+    settings:
+      link_to_entity: false
+    third_party_settings: {  }
+    type: string
+    region: content
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  langcode: true
diff --git a/modules/esha/onlinecourse/config/install/core.entity_view_display.node.online_course.teaser.yml b/modules/esha/onlinecourse/config/install/core.entity_view_display.node.online_course.teaser.yml
new file mode 100644
index 0000000..79dc5ec
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/core.entity_view_display.node.online_course.teaser.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.node.teaser
+    - field.field.node.online_course.field_faculty_name
+    - field.field.node.online_course.field_offered_by
+    - node.type.online_course
+  module:
+    - user
+id: node.online_course.teaser
+targetEntityType: node
+bundle: online_course
+mode: teaser
+content:
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  field_faculty_name: true
+  field_offered_by: true
+  langcode: true
diff --git a/modules/esha/onlinecourse/config/install/core.entity_view_mode.node.teaser.yml b/modules/esha/onlinecourse/config/install/core.entity_view_mode.node.teaser.yml
new file mode 100644
index 0000000..fb7a35a
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/core.entity_view_mode.node.teaser.yml
@@ -0,0 +1,12 @@
+uuid: eae4e8eb-df75-49ff-b350-c4bd59679b36
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+_core:
+  default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4
+id: node.teaser
+label: Teaser
+targetEntityType: node
+cache: true
diff --git a/modules/esha/onlinecourse/config/install/field.field.node.online_course.field_faculty_name.yml b/modules/esha/onlinecourse/config/install/field.field.node.online_course.field_faculty_name.yml
new file mode 100644
index 0000000..c5ea1a1
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/field.field.node.online_course.field_faculty_name.yml
@@ -0,0 +1,27 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_faculty_name
+    - node.type.fac_page
+    - node.type.online_course
+id: node.online_course.field_faculty_name
+field_name: field_faculty_name
+entity_type: node
+bundle: online_course
+label: 'Faculty name'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:node'
+  handler_settings:
+    target_bundles:
+      fac_page: fac_page
+    sort:
+      field: _none
+    auto_create: false
+    auto_create_bundle: ''
+field_type: entity_reference
diff --git a/modules/esha/onlinecourse/config/install/field.field.node.online_course.field_link_to_cour.yml b/modules/esha/onlinecourse/config/install/field.field.node.online_course.field_link_to_cour.yml
new file mode 100644
index 0000000..fddd4ed
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/field.field.node.online_course.field_link_to_cour.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_link_to_cour
+    - node.type.online_course
+  module:
+    - link
+id: node.online_course.field_link_to_cour
+field_name: field_link_to_cour
+entity_type: node
+bundle: online_course
+label: 'Link to Course'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  link_type: 17
+  title: 1
+field_type: link
diff --git a/modules/esha/onlinecourse/config/install/field.field.node.online_course.field_offered_by.yml b/modules/esha/onlinecourse/config/install/field.field.node.online_course.field_offered_by.yml
new file mode 100644
index 0000000..973b204
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/field.field.node.online_course.field_offered_by.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_offered_by
+    - node.type.online_course
+id: node.online_course.field_offered_by
+field_name: field_offered_by
+entity_type: node
+bundle: online_course
+label: 'Offered By'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings: {  }
+field_type: string
diff --git a/modules/esha/onlinecourse/config/install/field.storage.node.field_faculty_name.yml b/modules/esha/onlinecourse/config/install/field.storage.node.field_faculty_name.yml
new file mode 100644
index 0000000..d7653f8
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/field.storage.node.field_faculty_name.yml
@@ -0,0 +1,19 @@
+uuid: 7f80e5e4-d5da-49d4-8039-5b54fda033af
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+id: node.field_faculty_name
+field_name: field_faculty_name
+entity_type: node
+type: entity_reference
+settings:
+  target_type: node
+module: core
+locked: false
+cardinality: -1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/onlinecourse/config/install/field.storage.node.field_link_to_cour.yml b/modules/esha/onlinecourse/config/install/field.storage.node.field_link_to_cour.yml
new file mode 100644
index 0000000..86d2592
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/field.storage.node.field_link_to_cour.yml
@@ -0,0 +1,19 @@
+uuid: 4e9dd460-14ae-4be0-a820-b3b2f040b0d3
+langcode: en
+status: true
+dependencies:
+  module:
+    - link
+    - node
+id: node.field_link_to_cour
+field_name: field_link_to_cour
+entity_type: node
+type: link
+settings: {  }
+module: link
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/onlinecourse/config/install/field.storage.node.field_offered_by.yml b/modules/esha/onlinecourse/config/install/field.storage.node.field_offered_by.yml
new file mode 100644
index 0000000..6cf5567
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/field.storage.node.field_offered_by.yml
@@ -0,0 +1,21 @@
+uuid: cc60ea6e-7263-43dd-bd49-b74ef089a323
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+id: node.field_offered_by
+field_name: field_offered_by
+entity_type: node
+type: string
+settings:
+  max_length: 255
+  is_ascii: false
+  case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/onlinecourse/config/install/migrate_plus.migration.onlinecourse_sample.yml b/modules/esha/onlinecourse/config/install/migrate_plus.migration.onlinecourse_sample.yml
new file mode 100644
index 0000000..8f8ec38
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/migrate_plus.migration.onlinecourse_sample.yml
@@ -0,0 +1,36 @@
+uuid: 7ab17b40-597e-411a-a750-23c138da7c6d
+id: onlinecourse_sample
+label: Courses
+migration_group: default
+source:
+  plugin: csv
+  # Full path to the file.
+  path: '/var/www/CSV/onlinecourse_sample.csv'
+  # Column delimiter. Comma (,) by default.
+  delimiter: ','
+  # Field enclosure. Double quotation marks (") by default.
+  enclosure: '"'
+  # The number of rows at the beginning which are not data.
+  header_row_count: 1
+  keys:
+    - id
+process:
+  type:
+    plugin: default_value
+    default_value: online_course
+  title: title
+  field_link_to_cour: link
+  field_offered_by: offeredby
+  field_faculty_name:
+    -
+      plugin: explode
+      delimiter: '|'
+      source: names
+    -
+      plugin: entity_lookup
+      entity_type: node
+      bundle: fac_page
+destination:
+  plugin: 'entity:node'
+  bundle: online_course
+migration_dependencies: null
diff --git a/modules/esha/onlinecourse/config/install/node.type.fac_page.yml b/modules/esha/onlinecourse/config/install/node.type.fac_page.yml
new file mode 100644
index 0000000..47f8ffb
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/node.type.fac_page.yml
@@ -0,0 +1,23 @@
+uuid: b7471e78-83f0-4359-9512-d4a8f02c2218
+langcode: en
+status: true
+dependencies:
+  enforced:
+    module:
+      - acadmix_faculty
+  module:
+    - menu_ui
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+_core:
+  default_config_hash: yZnGgm-oTEuH3Qz8VcW49f94qFn-pYOYZdrX601an0U
+name: 'Faculty Page'
+type: fac_page
+description: 'Content template for opening Faculty Page'
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/onlinecourse/config/install/node.type.online_course.yml b/modules/esha/onlinecourse/config/install/node.type.online_course.yml
new file mode 100644
index 0000000..4f492e6
--- /dev/null
+++ b/modules/esha/onlinecourse/config/install/node.type.online_course.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - menu_ui
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+name: 'Online Course'
+type: online_course
+description: ''
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/onlinecourse/onlinecourse.info.yml b/modules/esha/onlinecourse/onlinecourse.info.yml
new file mode 100644
index 0000000..91191b6
--- /dev/null
+++ b/modules/esha/onlinecourse/onlinecourse.info.yml
@@ -0,0 +1,12 @@
+name: 'onlineCourse'
+type: module
+description: 'My Awesome Module'
+core: 8.x
+package: 'Custom'
+dependencies:
+  - drupal:text
+  - drupal:link
+  - drupal:path
+  - drupal:user
+  - drupal:node
+  - drupal:menu_ui
\ No newline at end of file
diff --git a/modules/esha/onlinecourse/onlinecourse.install b/modules/esha/onlinecourse/onlinecourse.install
new file mode 100644
index 0000000..7469bb9
--- /dev/null
+++ b/modules/esha/onlinecourse/onlinecourse.install
@@ -0,0 +1,22 @@
+
+<?php
+/**
+* Implements hook_uninstall().
+*/
+function onlinecourse_uninstall() { //<-- replace “welcome” with your module machine name 
+ // Load services.
+ $queryFactory = \Drupal::service('entity.query');
+ $nodeStorage  = \Drupal::entityManager()->getStorage('node');
+
+ // Query all entity.
+ $query = $queryFactory->get('node')
+// <-- replace event in below line with your content type machine name
+   ->condition('type', 'online_course'); 
+ $nids = $query->execute();
+
+ // Delete entities.
+ if (!empty($nids)) {
+   $entities = $nodeStorage->loadMultiple($nids);
+   $nodeStorage->delete($entities);
+ }
+}
diff --git a/modules/esha/onlinecourse/onlinecourse.module b/modules/esha/onlinecourse/onlinecourse.module
new file mode 100644
index 0000000..617de66
--- /dev/null
+++ b/modules/esha/onlinecourse/onlinecourse.module
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains onlinecourse.module.
+ */
+
+use Drupal\Core\Routing\RouteMatchInterface;
+
+/**
+ * Implements hook_help().
+ */
+function onlinecourse_help($route_name, RouteMatchInterface $route_match) {
+  switch ($route_name) {
+    // Main module help for the onlinecourse module.
+    case 'help.page.onlinecourse':
+      $output = '';
+      $output .= '<h3>' . t('About') . '</h3>';
+      $output .= '<p>' . t('My Awesome Module') . '</p>';
+      return $output;
+
+    default:
+  }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function onlinecourse_theme() {
+  return [
+    'onlinecourse' => [
+      'render element' => 'children',
+    ],
+  ];
+}
diff --git a/modules/esha/onlinecourse/templates/onlinecourse.html.twig b/modules/esha/onlinecourse/templates/onlinecourse.html.twig
new file mode 100644
index 0000000..91e43c8
--- /dev/null
+++ b/modules/esha/onlinecourse/templates/onlinecourse.html.twig
@@ -0,0 +1 @@
+<!-- Add you custom twig html here -->
\ No newline at end of file
diff --git a/modules/esha/onlinecourse/tests/src/Functional/LoadTest.php b/modules/esha/onlinecourse/tests/src/Functional/LoadTest.php
new file mode 100644
index 0000000..a25c263
--- /dev/null
+++ b/modules/esha/onlinecourse/tests/src/Functional/LoadTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\Tests\onlinecourse\Functional;
+
+use Drupal\Core\Url;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Simple test to ensure that main page loads with module enabled.
+ *
+ * @group onlinecourse
+ */
+class LoadTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['onlinecourse'];
+
+  /**
+   * A user with permission to administer site configuration.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $user;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->user = $this->drupalCreateUser(['administer site configuration']);
+    $this->drupalLogin($this->user);
+  }
+
+  /**
+   * Tests that the home page loads with a 200 response.
+   */
+  public function testLoad() {
+    $this->drupalGet(Url::fromRoute('<front>'));
+    $this->assertSession()->statusCodeEquals(200);
+  }
+
+}
diff --git a/modules/esha/placements/composer.json b/modules/esha/placements/composer.json
new file mode 100644
index 0000000..6900912
--- /dev/null
+++ b/modules/esha/placements/composer.json
@@ -0,0 +1,14 @@
+{
+  "name": "drupal/placements",
+  "type": "drupal-module",
+  "description": "Module for Placement Content Type",
+  "keywords": ["Drupal"],
+  "license": "GPL-2.0+",
+  "homepage": "https://www.drupal.org/project/placements",
+  "minimum-stability": "dev",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/placements",
+    "source": "http://cgit.drupalcode.org/placements"
+  },
+  "require": { }
+}
diff --git a/modules/esha/placements/config/install/core.entity_form_display.node.placements.default.yml b/modules/esha/placements/config/install/core.entity_form_display.node.placements.default.yml
new file mode 100644
index 0000000..f9aac4a
--- /dev/null
+++ b/modules/esha/placements/config/install/core.entity_form_display.node.placements.default.yml
@@ -0,0 +1,120 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.placements.body
+    - field.field.node.placements.field_new
+    - field.field.node.placements.field_placed
+    - field.field.node.placements.field_total_students_placed
+    - field.field.node.placements.field_year
+    - node.type.placements
+  module:
+    - path
+    - text
+  enforced:
+    module:
+      - placements
+id: node.placements.default
+targetEntityType: node
+bundle: placements
+mode: default
+content:
+  body:
+    weight: 125
+    settings:
+      rows: 9
+      summary_rows: 3
+      placeholder: ''
+    type: text_textarea_with_summary
+    region: content
+  created:
+    type: datetime_timestamp
+    weight: 10
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  field_new:
+    weight: 126
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: entity_reference_autocomplete
+    region: content
+  field_placed:
+    weight: 127
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: string_textfield
+    region: content
+  field_total_students_placed:
+    weight: 123
+    settings:
+      placeholder: ''
+    third_party_settings: {  }
+    type: number
+    region: content
+  field_year:
+    weight: 124
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: entity_reference_autocomplete
+    region: content
+  langcode:
+    type: language_select
+    weight: 2
+    region: content
+    settings:
+      include_locked: true
+    third_party_settings: {  }
+  path:
+    type: path
+    weight: 30
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  promote:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 15
+    region: content
+    third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
+  sticky:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 16
+    region: content
+    third_party_settings: {  }
+  title:
+    type: string_textfield
+    weight: -5
+    region: content
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  uid:
+    type: entity_reference_autocomplete
+    weight: 5
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    region: content
+    third_party_settings: {  }
+hidden: {  }
diff --git a/modules/esha/placements/config/install/core.entity_view_display.node.placements.default.yml b/modules/esha/placements/config/install/core.entity_view_display.node.placements.default.yml
new file mode 100644
index 0000000..b6f5b9e
--- /dev/null
+++ b/modules/esha/placements/config/install/core.entity_view_display.node.placements.default.yml
@@ -0,0 +1,67 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.placements.body
+    - field.field.node.placements.field_new
+    - field.field.node.placements.field_placed
+    - field.field.node.placements.field_total_students_placed
+    - field.field.node.placements.field_year
+    - node.type.placements
+  module:
+    - text
+    - user
+  enforced:
+    module:
+      - placements
+id: node.placements.default
+targetEntityType: node
+bundle: placements
+mode: default
+content:
+  body:
+    weight: 105
+    label: above
+    settings: {  }
+    type: text_default
+    region: content
+  field_new:
+    weight: 106
+    label: above
+    settings:
+      link: true
+    third_party_settings: {  }
+    type: entity_reference_label
+    region: content
+  field_placed:
+    weight: 107
+    label: above
+    settings:
+      link_to_entity: false
+    third_party_settings: {  }
+    type: string
+    region: content
+  field_total_students_placed:
+    weight: 103
+    label: above
+    settings:
+      thousand_separator: ''
+      prefix_suffix: true
+    third_party_settings: {  }
+    type: number_integer
+    region: content
+  field_year:
+    weight: 104
+    label: above
+    settings:
+      link: true
+    third_party_settings: {  }
+    type: entity_reference_label
+    region: content
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  langcode: true
diff --git a/modules/esha/placements/config/install/core.entity_view_display.node.placements.teaser.yml b/modules/esha/placements/config/install/core.entity_view_display.node.placements.teaser.yml
new file mode 100644
index 0000000..6a0abef
--- /dev/null
+++ b/modules/esha/placements/config/install/core.entity_view_display.node.placements.teaser.yml
@@ -0,0 +1,26 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.node.teaser
+    - field.field.node.placements.field_total_students_placed
+    - field.field.node.placements.field_year
+    - node.type.placements
+  module:
+    - user
+  enforced:
+    module:
+      - placements
+id: node.placements.teaser
+targetEntityType: node
+bundle: placements
+mode: teaser
+content:
+  links:
+    weight: 100
+    settings: {  }
+    region: content
+hidden:
+  field_total_students_placed: true
+  field_year: true
+  langcode: true
diff --git a/modules/esha/placements/config/install/core.entity_view_mode.node.teaser.yml b/modules/esha/placements/config/install/core.entity_view_mode.node.teaser.yml
new file mode 100644
index 0000000..f09eef8
--- /dev/null
+++ b/modules/esha/placements/config/install/core.entity_view_mode.node.teaser.yml
@@ -0,0 +1,15 @@
+uuid: eae4e8eb-df75-49ff-b350-c4bd59679b36
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - placements
+_core:
+  default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4
+id: node.teaser
+label: Teaser
+targetEntityType: node
+cache: true
diff --git a/modules/esha/placements/config/install/field.field.node.placements.body.yml b/modules/esha/placements/config/install/field.field.node.placements.body.yml
new file mode 100644
index 0000000..4eaef94
--- /dev/null
+++ b/modules/esha/placements/config/install/field.field.node.placements.body.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.body
+    - node.type.placements
+  module:
+    - text
+  enforced:
+    module:
+      - placements
+id: node.placements.body
+field_name: body
+entity_type: node
+bundle: placements
+label: Body
+description: ''
+required: false
+translatable: true
+default_value: {  }
+default_value_callback: ''
+settings:
+  display_summary: false
+field_type: text_with_summary
diff --git a/modules/esha/placements/config/install/field.field.node.placements.field_new.yml b/modules/esha/placements/config/install/field.field.node.placements.field_new.yml
new file mode 100644
index 0000000..4973424
--- /dev/null
+++ b/modules/esha/placements/config/install/field.field.node.placements.field_new.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_new
+    - node.type.placements
+    - taxonomy.vocabulary.vocab
+  enforced:
+    module:
+      - placements
+id: node.placements.field_new
+field_name: field_new
+entity_type: node
+bundle: placements
+label: new
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:taxonomy_term'
+  handler_settings:
+    target_bundles:
+      vocab: vocab
+    sort:
+      field: name
+      direction: asc
+    auto_create: false
+    auto_create_bundle: ''
+field_type: entity_reference
diff --git a/modules/esha/placements/config/install/field.field.node.placements.field_placed.yml b/modules/esha/placements/config/install/field.field.node.placements.field_placed.yml
new file mode 100644
index 0000000..5a941da
--- /dev/null
+++ b/modules/esha/placements/config/install/field.field.node.placements.field_placed.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_placed
+    - node.type.placements
+  enforced:
+    module:
+      - placements
+id: node.placements.field_placed
+field_name: field_placed
+entity_type: node
+bundle: placements
+label: placed
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings: {  }
+field_type: string
diff --git a/modules/esha/placements/config/install/field.field.node.placements.field_total_students_placed.yml b/modules/esha/placements/config/install/field.field.node.placements.field_total_students_placed.yml
new file mode 100644
index 0000000..a5867b7
--- /dev/null
+++ b/modules/esha/placements/config/install/field.field.node.placements.field_total_students_placed.yml
@@ -0,0 +1,25 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_total_students_placed
+    - node.type.placements
+  enforced:
+    module:
+      - placements
+id: node.placements.field_total_students_placed
+field_name: field_total_students_placed
+entity_type: node
+bundle: placements
+label: 'Total Students Placed'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  min: null
+  max: null
+  prefix: ''
+  suffix: ''
+field_type: integer
diff --git a/modules/esha/placements/config/install/field.field.node.placements.field_year.yml b/modules/esha/placements/config/install/field.field.node.placements.field_year.yml
new file mode 100644
index 0000000..ef2000d
--- /dev/null
+++ b/modules/esha/placements/config/install/field.field.node.placements.field_year.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_year
+    - node.type.placements
+    - taxonomy.vocabulary.year
+  enforced:
+    module:
+      - placements
+id: node.placements.field_year
+field_name: field_year
+entity_type: node
+bundle: placements
+label: Year
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:taxonomy_term'
+  handler_settings:
+    target_bundles:
+      year: year
+    sort:
+      field: name
+      direction: asc
+    auto_create: false
+    auto_create_bundle: placement_year
+field_type: entity_reference
diff --git a/modules/esha/placements/config/install/field.storage.node.body.yml b/modules/esha/placements/config/install/field.storage.node.body.yml
new file mode 100644
index 0000000..821a97a
--- /dev/null
+++ b/modules/esha/placements/config/install/field.storage.node.body.yml
@@ -0,0 +1,24 @@
+uuid: d15ccb4d-ffc3-42ae-abaa-012960942a15
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+    - text
+  enforced:
+    module:
+      - placements
+_core:
+  default_config_hash: EBUo7qOWqaiZaQ_RC9sLY5IoDKphS34v77VIHSACmVY
+id: node.body
+field_name: body
+entity_type: node
+type: text_with_summary
+settings: {  }
+module: text
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: true
+custom_storage: false
diff --git a/modules/esha/placements/config/install/field.storage.node.field_new.yml b/modules/esha/placements/config/install/field.storage.node.field_new.yml
new file mode 100644
index 0000000..117e02e
--- /dev/null
+++ b/modules/esha/placements/config/install/field.storage.node.field_new.yml
@@ -0,0 +1,23 @@
+uuid: f42f851c-6e7b-4843-98ce-f0c233649c4b
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+    - taxonomy
+  enforced:
+    module:
+      - placements
+id: node.field_new
+field_name: field_new
+entity_type: node
+type: entity_reference
+settings:
+  target_type: taxonomy_term
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/placements/config/install/field.storage.node.field_placed.yml b/modules/esha/placements/config/install/field.storage.node.field_placed.yml
new file mode 100644
index 0000000..d926eeb
--- /dev/null
+++ b/modules/esha/placements/config/install/field.storage.node.field_placed.yml
@@ -0,0 +1,24 @@
+uuid: ad069c50-3ddd-41a5-b5a6-1d930d1aa3df
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - placements
+id: node.field_placed
+field_name: field_placed
+entity_type: node
+type: string
+settings:
+  max_length: 255
+  is_ascii: false
+  case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/placements/config/install/field.storage.node.field_total_students_placed.yml b/modules/esha/placements/config/install/field.storage.node.field_total_students_placed.yml
new file mode 100644
index 0000000..010ad2f
--- /dev/null
+++ b/modules/esha/placements/config/install/field.storage.node.field_total_students_placed.yml
@@ -0,0 +1,23 @@
+uuid: 3e89b54e-f405-4dee-b175-10ac5bb61161
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - placements
+id: node.field_total_students_placed
+field_name: field_total_students_placed
+entity_type: node
+type: integer
+settings:
+  unsigned: false
+  size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/placements/config/install/field.storage.node.field_year.yml b/modules/esha/placements/config/install/field.storage.node.field_year.yml
new file mode 100644
index 0000000..5b6f903
--- /dev/null
+++ b/modules/esha/placements/config/install/field.storage.node.field_year.yml
@@ -0,0 +1,23 @@
+uuid: 404051f1-b4e2-4818-b895-e4bf114e7a93
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+    - taxonomy
+  enforced:
+    module:
+      - placements
+id: node.field_year
+field_name: field_year
+entity_type: node
+type: entity_reference
+settings:
+  target_type: taxonomy_term
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/placements/config/install/migrate_plus.migration.placements_import1.yml b/modules/esha/placements/config/install/migrate_plus.migration.placements_import1.yml
new file mode 100644
index 0000000..42dc7e5
--- /dev/null
+++ b/modules/esha/placements/config/install/migrate_plus.migration.placements_import1.yml
@@ -0,0 +1,30 @@
+uuid: 1b29566d-9275-46df-a57f-5f6595537753
+id: placements_import
+label: Import Placement Data
+migration_groups:
+  - default
+source:
+  plugin: csv
+  # Full path to the file.
+  path: '/var/www/CSV/Placements.csv'
+  # Column delimiter. Comma (,) by default.
+  delimiter: ','
+  # Field enclosure. Double quotation marks (") by default.
+  enclosure: '"'
+  # The number of rows at the beginning which are not data.
+  header_row_count: 1
+  keys:
+    - id
+process:
+  title: title
+  field_total_students_placed: total
+  field_year: year
+  type:
+    plugin: entity_lookup 
+    entity: taxonomy_term
+    bundle: placement_year
+    source: year 
+destination:
+  plugin: 'entity:node'
+  plugin: entity:taxonomy_term
+migration_dependencies: null
diff --git a/modules/esha/placements/config/install/node.type.placements.yml b/modules/esha/placements/config/install/node.type.placements.yml
new file mode 100644
index 0000000..f0bb423
--- /dev/null
+++ b/modules/esha/placements/config/install/node.type.placements.yml
@@ -0,0 +1,15 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - menu_ui
+  enforced:
+    module:
+      - placements
+name: Placements
+type: placements
+description: ''
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/placements/config/install/taxonomy.vocabulary.vocab.yml b/modules/esha/placements/config/install/taxonomy.vocabulary.vocab.yml
new file mode 100644
index 0000000..5c36cd8
--- /dev/null
+++ b/modules/esha/placements/config/install/taxonomy.vocabulary.vocab.yml
@@ -0,0 +1,12 @@
+uuid: dfa25a08-cadc-4bc6-826f-b817586af55b
+langcode: en
+status: true
+dependencies: 
+  enforced:
+    module:
+      - placements
+name: vocab
+vid: vocab
+description: ''
+hierarchy: 0
+weight: 0
diff --git a/modules/esha/placements/config/install/taxonomy.vocabulary.year.yml b/modules/esha/placements/config/install/taxonomy.vocabulary.year.yml
new file mode 100644
index 0000000..9cf2d82
--- /dev/null
+++ b/modules/esha/placements/config/install/taxonomy.vocabulary.year.yml
@@ -0,0 +1,12 @@
+uuid: a22778aa-6584-422b-932b-3c4e4f59c1b5
+langcode: en
+status: true
+dependencies: 
+  enforced:
+    module:
+      - placements
+name: year
+vid: year
+description: ''
+hierarchy: 0
+weight: 0
diff --git a/modules/esha/placements/placements.info.yml b/modules/esha/placements/placements.info.yml
new file mode 100644
index 0000000..638f772
--- /dev/null
+++ b/modules/esha/placements/placements.info.yml
@@ -0,0 +1,13 @@
+name: 'placements'
+type: module
+description: 'Module for Placement Content Type'
+core: 8.x
+package: 'Custom'
+dependencies:
+  - drupal:node
+  - drupal:text
+  - drupal:user
+  - drupal:menu_ui
+  - drupal:taxonomy
+  - drupal:options
+  - drupal:path
diff --git a/modules/esha/placements/placements.install b/modules/esha/placements/placements.install
new file mode 100644
index 0000000..6258322
--- /dev/null
+++ b/modules/esha/placements/placements.install
@@ -0,0 +1,22 @@
+
+<?php
+/**
+* Implements hook_uninstall().
+*/
+function placements_uninstall() { //<-- replace “welcome” with your module machine name 
+ // Load services.
+ $queryFactory = \Drupal::service('entity.query');
+ $nodeStorage  = \Drupal::entityManager()->getStorage('node');
+
+ // Query all entity.
+ $query = $queryFactory->get('node')
+// <-- replace event in below line with your content type machine name
+   ->condition('type', 'placements'); 
+ $nids = $query->execute();
+
+ // Delete entities.
+ if (!empty($nids)) {
+   $entities = $nodeStorage->loadMultiple($nids);
+   $nodeStorage->delete($entities);
+ }
+}
diff --git a/modules/esha/placements/placements.module b/modules/esha/placements/placements.module
new file mode 100644
index 0000000..20f3371
--- /dev/null
+++ b/modules/esha/placements/placements.module
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains placements.module.
+ */
+
+use Drupal\Core\Routing\RouteMatchInterface;
+
+/**
+ * Implements hook_help().
+ */
+function placements_help($route_name, RouteMatchInterface $route_match) {
+  switch ($route_name) {
+    // Main module help for the placements module.
+    case 'help.page.placements':
+      $output = '';
+      $output .= '<h3>' . t('About') . '</h3>';
+      $output .= '<p>' . t('Module for Placement Content Type') . '</p>';
+      return $output;
+
+    default:
+  }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function placements_theme() {
+  return [
+    'placements' => [
+      'render element' => 'children',
+    ],
+  ];
+}
diff --git a/modules/esha/placements/placements.routing.yml b/modules/esha/placements/placements.routing.yml
new file mode 100644
index 0000000..1872ef8
--- /dev/null
+++ b/modules/esha/placements/placements.routing.yml
@@ -0,0 +1,8 @@
+
+placements.placement_controller_hello:
+  path: '/placements/hello/{name}'
+  defaults:
+    _controller: '\Drupal\placements\Controller\PlacementController::hello'
+    _title: 'placed'
+  requirements:
+    _permission: 'access content'
diff --git a/modules/esha/placements/src/Controller/PlacementController.php b/modules/esha/placements/src/Controller/PlacementController.php
new file mode 100644
index 0000000..761db6a
--- /dev/null
+++ b/modules/esha/placements/src/Controller/PlacementController.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Drupal\placements\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
+
+/**
+ * Class PlacementController.
+ */
+class PlacementController extends ControllerBase {
+
+  /**
+   * Hello.
+   *
+   * @return string
+   *   Return Hello string.
+   */
+  public function hello($name) {
+    return [
+      '#type' => 'markup',
+      '#markup' => $this->t('Implement method: hello with parameter(s): $name'),
+    ];
+  }
+
+}
diff --git a/modules/esha/placements/templates/placements.html.twig b/modules/esha/placements/templates/placements.html.twig
new file mode 100644
index 0000000..91e43c8
--- /dev/null
+++ b/modules/esha/placements/templates/placements.html.twig
@@ -0,0 +1 @@
+<!-- Add you custom twig html here -->
\ No newline at end of file
diff --git a/modules/esha/placements/tests/src/Functional/LoadTest.php b/modules/esha/placements/tests/src/Functional/LoadTest.php
new file mode 100644
index 0000000..fd19fb6
--- /dev/null
+++ b/modules/esha/placements/tests/src/Functional/LoadTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\Tests\placements\Functional;
+
+use Drupal\Core\Url;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Simple test to ensure that main page loads with module enabled.
+ *
+ * @group placements
+ */
+class LoadTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['placements'];
+
+  /**
+   * A user with permission to administer site configuration.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $user;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->user = $this->drupalCreateUser(['administer site configuration']);
+    $this->drupalLogin($this->user);
+  }
+
+  /**
+   * Tests that the home page loads with a 200 response.
+   */
+  public function testLoad() {
+    $this->drupalGet(Url::fromRoute('<front>'));
+    $this->assertSession()->statusCodeEquals(200);
+  }
+
+}
diff --git a/modules/esha/programs/composer.json b/modules/esha/programs/composer.json
new file mode 100644
index 0000000..9889ab7
--- /dev/null
+++ b/modules/esha/programs/composer.json
@@ -0,0 +1,14 @@
+{
+  "name": "drupal/programs",
+  "type": "drupal-module",
+  "description": "Module for Content Type Programs Offered",
+  "keywords": ["Drupal"],
+  "license": "GPL-2.0+",
+  "homepage": "https://www.drupal.org/project/programs",
+  "minimum-stability": "dev",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/programs",
+    "source": "http://cgit.drupalcode.org/programs"
+  },
+  "require": { }
+}
diff --git a/modules/esha/programs/config/install/core.entity_form_display.node.p.default.yml b/modules/esha/programs/config/install/core.entity_form_display.node.p.default.yml
new file mode 100644
index 0000000..a01057d
--- /dev/null
+++ b/modules/esha/programs/config/install/core.entity_form_display.node.p.default.yml
@@ -0,0 +1,124 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.p.body
+    - field.field.node.p.field_courseware
+    - field.field.node.p.field_curriculum
+    - field.field.node.p.field_degree
+    - field.field.node.p.field_lesson_plan
+    - field.field.node.p.field_objectives
+    - node.type.p
+  module:
+    - file
+    - path
+    - text
+id: node.p.default
+targetEntityType: node
+bundle: p
+mode: default
+content:
+  body:
+    type: text_textarea_with_summary
+    weight: 121
+    settings:
+      rows: 9
+      summary_rows: 3
+      placeholder: ''
+    third_party_settings: {  }
+    region: content
+  created:
+    type: datetime_timestamp
+    weight: 10
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  field_courseware:
+    weight: 128
+    settings:
+      progress_indicator: throbber
+    third_party_settings: {  }
+    type: file_generic
+    region: content
+  field_curriculum:
+    weight: 123
+    settings:
+      progress_indicator: throbber
+    third_party_settings: {  }
+    type: file_generic
+    region: content
+  field_degree:
+    weight: 125
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: entity_reference_autocomplete
+    region: content
+  field_lesson_plan:
+    weight: 129
+    settings:
+      progress_indicator: throbber
+    third_party_settings: {  }
+    type: file_generic
+    region: content
+  field_objectives:
+    weight: 127
+    settings:
+      progress_indicator: throbber
+    third_party_settings: {  }
+    type: file_generic
+    region: content
+  langcode:
+    type: language_select
+    weight: 2
+    region: content
+    settings:
+      include_locked: true
+    third_party_settings: {  }
+  path:
+    type: path
+    weight: 30
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  promote:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 15
+    region: content
+    third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
+  sticky:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 16
+    region: content
+    third_party_settings: {  }
+  title:
+    type: string_textfield
+    weight: -5
+    region: content
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  uid:
+    type: entity_reference_autocomplete
+    weight: 5
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    region: content
+    third_party_settings: {  }
+hidden: {  }
diff --git a/modules/esha/programs/config/install/core.entity_view_display.node.p.default.yml b/modules/esha/programs/config/install/core.entity_view_display.node.p.default.yml
new file mode 100644
index 0000000..3c58d93
--- /dev/null
+++ b/modules/esha/programs/config/install/core.entity_view_display.node.p.default.yml
@@ -0,0 +1,74 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.p.body
+    - field.field.node.p.field_courseware
+    - field.field.node.p.field_curriculum
+    - field.field.node.p.field_degree
+    - field.field.node.p.field_lesson_plan
+    - field.field.node.p.field_objectives
+    - node.type.p
+  module:
+    - file
+    - text
+    - user
+id: node.p.default
+targetEntityType: node
+bundle: p
+mode: default
+content:
+  body:
+    label: hidden
+    type: text_default
+    weight: 101
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+  field_courseware:
+    weight: 108
+    label: above
+    settings:
+      use_description_as_link_text: true
+    third_party_settings: {  }
+    type: file_default
+    region: content
+  field_curriculum:
+    weight: 103
+    label: above
+    settings:
+      use_description_as_link_text: true
+    third_party_settings: {  }
+    type: file_default
+    region: content
+  field_degree:
+    weight: 105
+    label: above
+    settings:
+      link: true
+    third_party_settings: {  }
+    type: entity_reference_label
+    region: content
+  field_lesson_plan:
+    weight: 109
+    label: above
+    settings:
+      use_description_as_link_text: true
+    third_party_settings: {  }
+    type: file_default
+    region: content
+  field_objectives:
+    weight: 107
+    label: above
+    settings:
+      use_description_as_link_text: true
+    third_party_settings: {  }
+    type: file_default
+    region: content
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  langcode: true
diff --git a/modules/esha/programs/config/install/core.entity_view_display.node.p.teaser.yml b/modules/esha/programs/config/install/core.entity_view_display.node.p.teaser.yml
new file mode 100644
index 0000000..0b08722
--- /dev/null
+++ b/modules/esha/programs/config/install/core.entity_view_display.node.p.teaser.yml
@@ -0,0 +1,30 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.node.teaser
+    - field.field.node.p.body
+    - node.type.p
+  module:
+    - text
+    - user
+id: node.p.teaser
+targetEntityType: node
+bundle: p
+mode: teaser
+content:
+  body:
+    label: hidden
+    type: text_summary_or_trimmed
+    weight: 101
+    settings:
+      trim_length: 600
+    third_party_settings: {  }
+    region: content
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  langcode: true
diff --git a/modules/esha/programs/config/install/field.field.node.p.body.yml b/modules/esha/programs/config/install/field.field.node.p.body.yml
new file mode 100644
index 0000000..9e25420
--- /dev/null
+++ b/modules/esha/programs/config/install/field.field.node.p.body.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.body
+    - node.type.p
+  module:
+    - text
+id: node.p.body
+field_name: body
+entity_type: node
+bundle: p
+label: Body
+description: ''
+required: false
+translatable: true
+default_value: {  }
+default_value_callback: ''
+settings:
+  display_summary: true
+field_type: text_with_summary
diff --git a/modules/esha/programs/config/install/field.field.node.p.field_courseware.yml b/modules/esha/programs/config/install/field.field.node.p.field_courseware.yml
new file mode 100644
index 0000000..4e4b22c
--- /dev/null
+++ b/modules/esha/programs/config/install/field.field.node.p.field_courseware.yml
@@ -0,0 +1,26 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_courseware
+    - node.type.p
+  module:
+    - file
+id: node.p.field_courseware
+field_name: field_courseware
+entity_type: node
+bundle: p
+label: Courseware
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  file_directory: '[date:custom:Y]-[date:custom:m]'
+  file_extensions: pdf
+  max_filesize: ''
+  description_field: false
+  handler: 'default:file'
+  handler_settings: {  }
+field_type: file
diff --git a/modules/esha/programs/config/install/field.field.node.p.field_curriculum.yml b/modules/esha/programs/config/install/field.field.node.p.field_curriculum.yml
new file mode 100644
index 0000000..f782e17
--- /dev/null
+++ b/modules/esha/programs/config/install/field.field.node.p.field_curriculum.yml
@@ -0,0 +1,26 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_curriculum
+    - node.type.p
+  module:
+    - file
+id: node.p.field_curriculum
+field_name: field_curriculum
+entity_type: node
+bundle: p
+label: Curriculum
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  file_directory: '[date:custom:Y]-[date:custom:m]'
+  file_extensions: pdf
+  max_filesize: '12 MB'
+  description_field: false
+  handler: 'default:file'
+  handler_settings: {  }
+field_type: file
diff --git a/modules/esha/programs/config/install/field.field.node.p.field_degree.yml b/modules/esha/programs/config/install/field.field.node.p.field_degree.yml
new file mode 100644
index 0000000..06ff5f0
--- /dev/null
+++ b/modules/esha/programs/config/install/field.field.node.p.field_degree.yml
@@ -0,0 +1,28 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_degree
+    - node.type.p
+    - taxonomy.vocabulary.offered_programs
+id: node.p.field_degree
+field_name: field_degree
+entity_type: node
+bundle: p
+label: Degree
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:taxonomy_term'
+  handler_settings:
+    target_bundles:
+      offered_programs: offered_programs
+    sort:
+      field: name
+      direction: asc
+    auto_create: false
+    auto_create_bundle: ''
+field_type: entity_reference
diff --git a/modules/esha/programs/config/install/field.field.node.p.field_lesson_plan.yml b/modules/esha/programs/config/install/field.field.node.p.field_lesson_plan.yml
new file mode 100644
index 0000000..29229ab
--- /dev/null
+++ b/modules/esha/programs/config/install/field.field.node.p.field_lesson_plan.yml
@@ -0,0 +1,26 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_lesson_plan
+    - node.type.p
+  module:
+    - file
+id: node.p.field_lesson_plan
+field_name: field_lesson_plan
+entity_type: node
+bundle: p
+label: 'Lesson Plan'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  file_directory: '[date:custom:Y]-[date:custom:m]'
+  file_extensions: pdf
+  max_filesize: ''
+  description_field: false
+  handler: 'default:file'
+  handler_settings: {  }
+field_type: file
diff --git a/modules/esha/programs/config/install/field.field.node.p.field_objectives.yml b/modules/esha/programs/config/install/field.field.node.p.field_objectives.yml
new file mode 100644
index 0000000..fe10a5b
--- /dev/null
+++ b/modules/esha/programs/config/install/field.field.node.p.field_objectives.yml
@@ -0,0 +1,26 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_objectives
+    - node.type.p
+  module:
+    - file
+id: node.p.field_objectives
+field_name: field_objectives
+entity_type: node
+bundle: p
+label: Objectives
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  file_directory: '[date:custom:Y]-[date:custom:m]'
+  file_extensions: pdf
+  max_filesize: ''
+  description_field: false
+  handler: 'default:file'
+  handler_settings: {  }
+field_type: file
diff --git a/modules/esha/programs/config/install/field.storage.node.field_courseware.yml b/modules/esha/programs/config/install/field.storage.node.field_courseware.yml
new file mode 100644
index 0000000..ce75fe2
--- /dev/null
+++ b/modules/esha/programs/config/install/field.storage.node.field_courseware.yml
@@ -0,0 +1,23 @@
+uuid: 4f345cc8-3a42-45bc-8224-5e33536cd339
+langcode: en
+status: true
+dependencies:
+  module:
+    - file
+    - node
+id: node.field_courseware
+field_name: field_courseware
+entity_type: node
+type: file
+settings:
+  display_field: false
+  display_default: false
+  uri_scheme: public
+  target_type: file
+module: file
+locked: false
+cardinality: -1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/programs/config/install/field.storage.node.field_curriculum.yml b/modules/esha/programs/config/install/field.storage.node.field_curriculum.yml
new file mode 100644
index 0000000..50b7f5b
--- /dev/null
+++ b/modules/esha/programs/config/install/field.storage.node.field_curriculum.yml
@@ -0,0 +1,23 @@
+uuid: 37ea26ab-f120-4e68-9a51-af20519bb867
+langcode: en
+status: true
+dependencies:
+  module:
+    - file
+    - node
+id: node.field_curriculum
+field_name: field_curriculum
+entity_type: node
+type: file
+settings:
+  display_field: false
+  display_default: false
+  uri_scheme: public
+  target_type: file
+module: file
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/programs/config/install/field.storage.node.field_degree.yml b/modules/esha/programs/config/install/field.storage.node.field_degree.yml
new file mode 100644
index 0000000..a3c9c4c
--- /dev/null
+++ b/modules/esha/programs/config/install/field.storage.node.field_degree.yml
@@ -0,0 +1,20 @@
+uuid: 17870542-92b4-4097-9fd7-2ff5e2aedfcf
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+    - taxonomy
+id: node.field_degree
+field_name: field_degree
+entity_type: node
+type: entity_reference
+settings:
+  target_type: taxonomy_term
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/programs/config/install/field.storage.node.field_lesson_plan.yml b/modules/esha/programs/config/install/field.storage.node.field_lesson_plan.yml
new file mode 100644
index 0000000..45dabec
--- /dev/null
+++ b/modules/esha/programs/config/install/field.storage.node.field_lesson_plan.yml
@@ -0,0 +1,23 @@
+uuid: bb5ebaad-6106-4cce-abcf-7ed7fff8c220
+langcode: en
+status: true
+dependencies:
+  module:
+    - file
+    - node
+id: node.field_lesson_plan
+field_name: field_lesson_plan
+entity_type: node
+type: file
+settings:
+  display_field: false
+  display_default: false
+  uri_scheme: public
+  target_type: file
+module: file
+locked: false
+cardinality: -1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/programs/config/install/field.storage.node.field_objectives.yml b/modules/esha/programs/config/install/field.storage.node.field_objectives.yml
new file mode 100644
index 0000000..f6c5857
--- /dev/null
+++ b/modules/esha/programs/config/install/field.storage.node.field_objectives.yml
@@ -0,0 +1,23 @@
+uuid: c65123d9-9165-4ecf-8d9d-86085fee2bcd
+langcode: en
+status: true
+dependencies:
+  module:
+    - file
+    - node
+id: node.field_objectives
+field_name: field_objectives
+entity_type: node
+type: file
+settings:
+  display_field: false
+  display_default: false
+  uri_scheme: public
+  target_type: file
+module: file
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/programs/config/install/node.type.p.yml b/modules/esha/programs/config/install/node.type.p.yml
new file mode 100644
index 0000000..7978d3f
--- /dev/null
+++ b/modules/esha/programs/config/install/node.type.p.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - menu_ui
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+name: 'Programs Offered'
+type: p
+description: ''
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/programs/config/install/programs_offered.yaml b/modules/esha/programs/config/install/programs_offered.yaml
new file mode 100644
index 0000000..1bd7001
--- /dev/null
+++ b/modules/esha/programs/config/install/programs_offered.yaml
@@ -0,0 +1,110 @@
+id: programs_offered
+label: 'Programs Offered Import'
+migration_group: default
+source:
+  plugin: csv
+  path: '/var/www/CSV/programs_offered.csv'
+  delimiter: ','
+  enclosure: '"'
+  header_row_count: 1
+  keys:
+    - id
+  constants:
+    file_source: /var/www/programsoffered
+    file_dest1: 'public://programs_offered_courseware/'
+    file_dest2: 'public://programs_offered_lessonplan/'
+    file_dest3: 'public://programs_offered_curriculum/'
+    file_dest4: 'public://programs_offered_objectives/'
+process:
+  type:
+    plugin: default_value
+    default_value: p
+  source_path1:
+    -
+      plugin: skip_on_empty
+      method: process
+      source: courseware
+    -
+      plugin: concat
+      delimiter: /
+      source:
+        - constants/file_source
+        - courseware
+  source_path2:
+    -
+      plugin: skip_on_empty
+      method: process
+      source: lessonplan
+    -
+      plugin: concat
+      delimiter: /
+      source:
+        - constants/file_source
+        - lessonplan
+  source_path3:
+    -
+      plugin: skip_on_empty
+      method: process
+      source: curriculum
+    -
+      plugin: concat
+      delimiter: /
+      source:
+        - constants/file_source
+        - curriculum
+  source_path4:
+    -
+      plugin: skip_on_empty
+      method: process
+      source: objectives
+    -
+      plugin: concat
+      delimiter: /
+      source:
+        - constants/file_source
+        - objectives
+  title: title
+  body/value: body
+  body/format:
+    -
+      plugin: default_value
+      default_value: basic_html
+  field_course_description: descr
+  field_courseware:
+    -
+      plugin: explode
+      delimiter: '|'
+      source: courseware
+    -
+      plugin: file_import
+      source: '@source_path1'
+      destination: constants/file_dest1
+  field_lesson_plan:
+    -
+      plugin: explode
+      delimiter: '|'
+      source: lessonplan
+    -
+      plugin: file_import
+      source: '@source_path2'
+      destination: constants/file_dest2
+  field_curriculum:
+    plugin: file_import
+    source: '@source_path3'
+    destination: constants/file_dest3
+  field_objectives:
+    plugin: file_import
+    source: '@source_path4'
+    destination: constants/file_dest4
+  field_degree:
+    plugin: entity_lookup 
+    entity: taxonomy_term
+    bundle: offered_programs
+    source: programtype 
+destination:
+  plugin: 'entity:node'
+  plugin: 'entity:taxonomy_term'
+  bundle: p
+migration_dependencies: 
+  required: {  }
+  optional: {  }
diff --git a/modules/esha/programs/config/install/taxonomy.vocabulary.offered_programs.yml b/modules/esha/programs/config/install/taxonomy.vocabulary.offered_programs.yml
new file mode 100644
index 0000000..dfbc3c1
--- /dev/null
+++ b/modules/esha/programs/config/install/taxonomy.vocabulary.offered_programs.yml
@@ -0,0 +1,9 @@
+uuid: f55c9d15-5ce8-4e66-9682-df8d98bd0382
+langcode: en
+status: true
+dependencies: {  }
+name: 'Offered Programs'
+vid: offered_programs
+description: ''
+hierarchy: 0
+weight: 0
diff --git a/modules/esha/programs/programs.info.yml b/modules/esha/programs/programs.info.yml
new file mode 100644
index 0000000..284cbaa
--- /dev/null
+++ b/modules/esha/programs/programs.info.yml
@@ -0,0 +1,13 @@
+name: 'programs'
+type: module
+description: 'Module for Content Type Programs Offered'
+core: 8.x
+package: 'Custom'
+dependencies:
+  - drupal:file
+  - drupal:text
+  - drupal:user
+  - drupal:path
+  - drupal:node
+  - drupal:taxonomy
+  - drupal:menu_ui
diff --git a/modules/esha/programs/programs.install b/modules/esha/programs/programs.install
new file mode 100644
index 0000000..404bcba
--- /dev/null
+++ b/modules/esha/programs/programs.install
@@ -0,0 +1,22 @@
+
+<?php
+/**
+* Implements hook_uninstall().
+*/
+function programs_uninstall() { //<-- replace “welcome” with your module machine name 
+ // Load services.
+ $queryFactory = \Drupal::service('entity.query');
+ $nodeStorage  = \Drupal::entityManager()->getStorage('node');
+
+ // Query all entity.
+ $query = $queryFactory->get('node')
+// <-- replace event in below line with your content type machine name
+   ->condition('type', 'p'); 
+ $nids = $query->execute();
+
+ // Delete entities.
+ if (!empty($nids)) {
+   $entities = $nodeStorage->loadMultiple($nids);
+   $nodeStorage->delete($entities);
+ }
+}
diff --git a/modules/esha/programs/programs.module b/modules/esha/programs/programs.module
new file mode 100644
index 0000000..4909c34
--- /dev/null
+++ b/modules/esha/programs/programs.module
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains programs.module.
+ */
+
+use Drupal\Core\Routing\RouteMatchInterface;
+
+/**
+ * Implements hook_help().
+ */
+function programs_help($route_name, RouteMatchInterface $route_match) {
+  switch ($route_name) {
+    // Main module help for the programs module.
+    case 'help.page.programs':
+      $output = '';
+      $output .= '<h3>' . t('About') . '</h3>';
+      $output .= '<p>' . t('Module for Content Type Programs Offered') . '</p>';
+      return $output;
+
+    default:
+  }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function programs_theme() {
+  return [
+    'programs' => [
+      'render element' => 'children',
+    ],
+  ];
+}
diff --git a/modules/esha/programs/programs.routing.yml b/modules/esha/programs/programs.routing.yml
new file mode 100644
index 0000000..240db1e
--- /dev/null
+++ b/modules/esha/programs/programs.routing.yml
@@ -0,0 +1,8 @@
+
+programs.programs_offered_controller_hello:
+  path: '/programs/hello/{name}'
+  defaults:
+    _controller: '\Drupal\programs\Controller\ProgramsOfferedController::hello'
+    _title: 'control'
+  requirements:
+    _permission: 'access content'
diff --git a/modules/esha/programs/src/Controller/ProgramsOfferedController.php b/modules/esha/programs/src/Controller/ProgramsOfferedController.php
new file mode 100644
index 0000000..7fe6888
--- /dev/null
+++ b/modules/esha/programs/src/Controller/ProgramsOfferedController.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Drupal\programs\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
+
+/**
+ * Class ProgramsOfferedController.
+ */
+class ProgramsOfferedController extends ControllerBase {
+
+  /**
+   * Hello.
+   *
+   * @return string
+   *   Return Hello string.
+   */
+  public function hello($name) {
+    return [
+      '#type' => 'markup',
+      '#markup' => $this->t('Implement method: hello with parameter(s): $name'),
+    ];
+  }
+
+}
diff --git a/modules/esha/programs/templates/programs.html.twig b/modules/esha/programs/templates/programs.html.twig
new file mode 100644
index 0000000..91e43c8
--- /dev/null
+++ b/modules/esha/programs/templates/programs.html.twig
@@ -0,0 +1 @@
+<!-- Add you custom twig html here -->
\ No newline at end of file
diff --git a/modules/esha/programs/tests/src/Functional/LoadTest.php b/modules/esha/programs/tests/src/Functional/LoadTest.php
new file mode 100644
index 0000000..8d3d7ab
--- /dev/null
+++ b/modules/esha/programs/tests/src/Functional/LoadTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\Tests\programs\Functional;
+
+use Drupal\Core\Url;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Simple test to ensure that main page loads with module enabled.
+ *
+ * @group programs
+ */
+class LoadTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['programs'];
+
+  /**
+   * A user with permission to administer site configuration.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $user;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->user = $this->drupalCreateUser(['administer site configuration']);
+    $this->drupalLogin($this->user);
+  }
+
+  /**
+   * Tests that the home page loads with a 200 response.
+   */
+  public function testLoad() {
+    $this->drupalGet(Url::fromRoute('<front>'));
+    $this->assertSession()->statusCodeEquals(200);
+  }
+
+}
diff --git a/modules/esha/sig/composer.json b/modules/esha/sig/composer.json
new file mode 100644
index 0000000..92be454
--- /dev/null
+++ b/modules/esha/sig/composer.json
@@ -0,0 +1,14 @@
+{
+  "name": "drupal/sig",
+  "type": "drupal-module",
+  "description": "Module for Special Interest Groups Content Type",
+  "keywords": ["Drupal"],
+  "license": "GPL-2.0+",
+  "homepage": "https://www.drupal.org/project/sig",
+  "minimum-stability": "dev",
+  "support": {
+    "issues": "https://www.drupal.org/project/issues/sig",
+    "source": "http://cgit.drupalcode.org/sig"
+  },
+  "require": { }
+}
diff --git a/modules/esha/sig/config/install/core.entity_form_display.node.special_interest_groups.default.yml b/modules/esha/sig/config/install/core.entity_form_display.node.special_interest_groups.default.yml
new file mode 100644
index 0000000..2a56e47
--- /dev/null
+++ b/modules/esha/sig/config/install/core.entity_form_display.node.special_interest_groups.default.yml
@@ -0,0 +1,93 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.special_interest_groups.field_faculty_head
+    - field.field.node.special_interest_groups.field_sig_members
+    - node.type.special_interest_groups
+  module:
+    - path
+  enforced:
+    module:
+      - sig
+id: node.special_interest_groups.default
+targetEntityType: node
+bundle: special_interest_groups
+mode: default
+content:
+  created:
+    type: datetime_timestamp
+    weight: 10
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  field_faculty_head:
+    weight: 122
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: entity_reference_autocomplete
+    region: content
+  field_sig_members:
+    weight: 123
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+    type: entity_reference_autocomplete
+    region: content
+  langcode:
+    type: language_select
+    weight: 2
+    region: content
+    settings:
+      include_locked: true
+    third_party_settings: {  }
+  path:
+    type: path
+    weight: 30
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  promote:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 15
+    region: content
+    third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
+  sticky:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 16
+    region: content
+    third_party_settings: {  }
+  title:
+    type: string_textfield
+    weight: -5
+    region: content
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  uid:
+    type: entity_reference_autocomplete
+    weight: 5
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    region: content
+    third_party_settings: {  }
+hidden: {  }
diff --git a/modules/esha/sig/config/install/core.entity_view_display.node.special_interest_groups.default.yml b/modules/esha/sig/config/install/core.entity_view_display.node.special_interest_groups.default.yml
new file mode 100644
index 0000000..41cd888
--- /dev/null
+++ b/modules/esha/sig/config/install/core.entity_view_display.node.special_interest_groups.default.yml
@@ -0,0 +1,40 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.special_interest_groups.field_faculty_head
+    - field.field.node.special_interest_groups.field_sig_members
+    - node.type.special_interest_groups
+  module:
+    - user
+  enforced:
+    module:
+      - sig
+id: node.special_interest_groups.default
+targetEntityType: node
+bundle: special_interest_groups
+mode: default
+content:
+  field_faculty_head:
+    weight: 102
+    label: above
+    settings:
+      link: true
+    third_party_settings: {  }
+    type: entity_reference_label
+    region: content
+  field_sig_members:
+    weight: 103
+    label: above
+    settings:
+      link: true
+    third_party_settings: {  }
+    type: entity_reference_label
+    region: content
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  langcode: true
diff --git a/modules/esha/sig/config/install/core.entity_view_display.node.special_interest_groups.teaser.yml b/modules/esha/sig/config/install/core.entity_view_display.node.special_interest_groups.teaser.yml
new file mode 100644
index 0000000..01fe2d5
--- /dev/null
+++ b/modules/esha/sig/config/install/core.entity_view_display.node.special_interest_groups.teaser.yml
@@ -0,0 +1,25 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.node.teaser
+    - field.field.node.special_interest_groups.field_faculty_head
+    - node.type.special_interest_groups
+  module:
+    - user
+  enforced:
+    module:
+      - sig
+id: node.special_interest_groups.teaser
+targetEntityType: node
+bundle: special_interest_groups
+mode: teaser
+content:
+  links:
+    weight: 100
+    settings: {  }
+    third_party_settings: {  }
+    region: content
+hidden:
+  field_faculty_head: true
+  langcode: true
diff --git a/modules/esha/sig/config/install/core.entity_view_mode.node.teaser.yml b/modules/esha/sig/config/install/core.entity_view_mode.node.teaser.yml
new file mode 100644
index 0000000..138bd3c
--- /dev/null
+++ b/modules/esha/sig/config/install/core.entity_view_mode.node.teaser.yml
@@ -0,0 +1,15 @@
+uuid: eae4e8eb-df75-49ff-b350-c4bd59679b36
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - sig
+_core:
+  default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4
+id: node.teaser
+label: Teaser
+targetEntityType: node
+cache: true
diff --git a/modules/esha/sig/config/install/field.field.node.special_interest_groups.field_faculty_head.yml b/modules/esha/sig/config/install/field.field.node.special_interest_groups.field_faculty_head.yml
new file mode 100644
index 0000000..866afa7
--- /dev/null
+++ b/modules/esha/sig/config/install/field.field.node.special_interest_groups.field_faculty_head.yml
@@ -0,0 +1,30 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_faculty_head
+    - node.type.fac_page
+    - node.type.special_interest_groups
+  enforced:
+    module:
+      - sig
+id: node.special_interest_groups.field_faculty_head
+field_name: field_faculty_head
+entity_type: node
+bundle: special_interest_groups
+label: 'Faculty Head'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:node'
+  handler_settings:
+    target_bundles:
+      fac_page: fac_page
+    sort:
+      field: _none
+    auto_create: false
+    auto_create_bundle: ''
+field_type: entity_reference
diff --git a/modules/esha/sig/config/install/field.field.node.special_interest_groups.field_sig_members.yml b/modules/esha/sig/config/install/field.field.node.special_interest_groups.field_sig_members.yml
new file mode 100644
index 0000000..8b199d9
--- /dev/null
+++ b/modules/esha/sig/config/install/field.field.node.special_interest_groups.field_sig_members.yml
@@ -0,0 +1,30 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_sig_members
+    - node.type.fac_page
+    - node.type.special_interest_groups
+  enforced:
+    module:
+      - sig
+id: node.special_interest_groups.field_sig_members
+field_name: field_sig_members
+entity_type: node
+bundle: special_interest_groups
+label: 'SIG Members'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:node'
+  handler_settings:
+    target_bundles:
+      fac_page: fac_page
+    sort:
+      field: _none
+    auto_create: false
+    auto_create_bundle: ''
+field_type: entity_reference
diff --git a/modules/esha/sig/config/install/field.storage.node.field_faculty_head.yml b/modules/esha/sig/config/install/field.storage.node.field_faculty_head.yml
new file mode 100644
index 0000000..bd37713
--- /dev/null
+++ b/modules/esha/sig/config/install/field.storage.node.field_faculty_head.yml
@@ -0,0 +1,22 @@
+uuid: c30dd806-cceb-4e4a-94f5-cc06173cf69a
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - sig
+id: node.field_faculty_head
+field_name: field_faculty_head
+entity_type: node
+type: entity_reference
+settings:
+  target_type: node
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/sig/config/install/field.storage.node.field_sig_members.yml b/modules/esha/sig/config/install/field.storage.node.field_sig_members.yml
new file mode 100644
index 0000000..8346ae7
--- /dev/null
+++ b/modules/esha/sig/config/install/field.storage.node.field_sig_members.yml
@@ -0,0 +1,22 @@
+uuid: 0d465dd6-6376-449e-b185-1e75febf6c2f
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+  enforced:
+    module:
+      - sig
+id: node.field_sig_members
+field_name: field_sig_members
+entity_type: node
+type: entity_reference
+settings:
+  target_type: node
+module: core
+locked: false
+cardinality: -1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/modules/esha/sig/config/install/migrate_plus.migration.sig_sample.yml b/modules/esha/sig/config/install/migrate_plus.migration.sig_sample.yml
new file mode 100644
index 0000000..d309984
--- /dev/null
+++ b/modules/esha/sig/config/install/migrate_plus.migration.sig_sample.yml
@@ -0,0 +1,40 @@
+uuid: 9dea4ec4-fb79-4a5f-a37a-a045de069432
+id: sig_sample
+label: 'SIG Sample'
+migration_group: default
+source:
+  plugin: csv
+  # Full path to the file.
+  path: '/var/www/CSV/sig_sample.csv'
+  # Column delimiter. Comma (,) by default.
+  delimiter: ','
+  # Field enclosure. Double quotation marks (") by default.
+  enclosure: '"'
+  # The number of rows at the beginning which are not data.
+  header_row_count: 1
+  keys:
+    - id
+process:
+  type:
+    plugin: default_value
+    default_value: special_interest_groups
+  title: title
+  field_faculty_head:
+    -
+      plugin: entity_lookup
+      entity_type: node
+      bundle: fac_page
+      source: head
+  field_sig_members:
+    -
+      plugin: explode
+      delimiter: '|'
+      source: members
+    -
+      plugin: entity_lookup
+      entity_type: node
+      bundle: fac_page
+destination:
+  plugin: 'entity:node'
+  bundle: special_interest_groups
+migration_dependencies: null
diff --git a/modules/esha/sig/config/install/node.type.fac_page.yml b/modules/esha/sig/config/install/node.type.fac_page.yml
new file mode 100644
index 0000000..5fd2e1e
--- /dev/null
+++ b/modules/esha/sig/config/install/node.type.fac_page.yml
@@ -0,0 +1,26 @@
+uuid: b7471e78-83f0-4359-9512-d4a8f02c2218
+langcode: en
+status: true
+dependencies:
+  enforced:
+    module:
+      - acadmix_faculty
+  module:
+    - menu_ui
+  enforced:
+    module:
+      - sig
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+_core:
+  default_config_hash: yZnGgm-oTEuH3Qz8VcW49f94qFn-pYOYZdrX601an0U
+name: 'Faculty Page'
+type: fac_page
+description: 'Content template for opening Faculty Page'
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/sig/config/install/node.type.special_interest_groups.yml b/modules/esha/sig/config/install/node.type.special_interest_groups.yml
new file mode 100644
index 0000000..7a413fb
--- /dev/null
+++ b/modules/esha/sig/config/install/node.type.special_interest_groups.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - menu_ui
+  enforced:
+    module:
+      - sig
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+name: 'Special Interest Groups'
+type: special_interest_groups
+description: ''
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/modules/esha/sig/sig.info.yml b/modules/esha/sig/sig.info.yml
new file mode 100644
index 0000000..94c6b38
--- /dev/null
+++ b/modules/esha/sig/sig.info.yml
@@ -0,0 +1,10 @@
+name: 'sig'
+type: module
+description: 'Module for Special Interest Groups Content Type'
+core: 8.x
+package: 'Custom'
+dependencies:
+  - drupal:path
+  - drupal:node
+  - drupal:user
+  - drupal:menu_ui
diff --git a/modules/esha/sig/sig.install b/modules/esha/sig/sig.install
new file mode 100644
index 0000000..b032a5b
--- /dev/null
+++ b/modules/esha/sig/sig.install
@@ -0,0 +1,22 @@
+
+<?php
+/**
+* Implements hook_uninstall().
+*/
+function sig_uninstall() { //<-- replace “welcome” with your module machine name 
+ // Load services.
+ $queryFactory = \Drupal::service('entity.query');
+ $nodeStorage  = \Drupal::entityManager()->getStorage('node');
+
+ // Query all entity.
+ $query = $queryFactory->get('node')
+// <-- replace event in below line with your content type machine name
+   ->condition('type', 'special_interest_groups'); 
+ $nids = $query->execute();
+
+ // Delete entities.
+ if (!empty($nids)) {
+   $entities = $nodeStorage->loadMultiple($nids);
+   $nodeStorage->delete($entities);
+ }
+}
diff --git a/modules/esha/sig/sig.module b/modules/esha/sig/sig.module
new file mode 100644
index 0000000..72809bb
--- /dev/null
+++ b/modules/esha/sig/sig.module
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains sig.module.
+ */
+
+use Drupal\Core\Routing\RouteMatchInterface;
+
+/**
+ * Implements hook_help().
+ */
+function sig_help($route_name, RouteMatchInterface $route_match) {
+  switch ($route_name) {
+    // Main module help for the sig module.
+    case 'help.page.sig':
+      $output = '';
+      $output .= '<h3>' . t('About') . '</h3>';
+      $output .= '<p>' . t('Module for Special Interest Groups Content Type') . '</p>';
+      return $output;
+
+    default:
+  }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function sig_theme() {
+  return [
+    'sig' => [
+      'render element' => 'children',
+    ],
+  ];
+}
diff --git a/modules/esha/sig/templates/sig.html.twig b/modules/esha/sig/templates/sig.html.twig
new file mode 100644
index 0000000..91e43c8
--- /dev/null
+++ b/modules/esha/sig/templates/sig.html.twig
@@ -0,0 +1 @@
+<!-- Add you custom twig html here -->
\ No newline at end of file
diff --git a/modules/esha/sig/tests/src/Functional/LoadTest.php b/modules/esha/sig/tests/src/Functional/LoadTest.php
new file mode 100644
index 0000000..8b87e58
--- /dev/null
+++ b/modules/esha/sig/tests/src/Functional/LoadTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\Tests\sig\Functional;
+
+use Drupal\Core\Url;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Simple test to ensure that main page loads with module enabled.
+ *
+ * @group sig
+ */
+class LoadTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['sig'];
+
+  /**
+   * A user with permission to administer site configuration.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $user;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->user = $this->drupalCreateUser(['administer site configuration']);
+    $this->drupalLogin($this->user);
+  }
+
+  /**
+   * Tests that the home page loads with a 200 response.
+   */
+  public function testLoad() {
+    $this->drupalGet(Url::fromRoute('<front>'));
+    $this->assertSession()->statusCodeEquals(200);
+  }
+
+}
-- 
cgit