diff --git a/src/registrasi-sidsem/registrasi-sidsem.module.ts b/src/registrasi-sidsem/registrasi-sidsem.module.ts
index 37af696b48ea52963d04e037d01f18d89037cc0d..2c719e4bb91688835ae74a0deddff814efc15d31 100644
--- a/src/registrasi-sidsem/registrasi-sidsem.module.ts
+++ b/src/registrasi-sidsem/registrasi-sidsem.module.ts
@@ -14,6 +14,9 @@ import { BerkasSidsem } from "src/entities/berkasSidsem.entity";
 import { Topik } from "src/entities/topik.entity";
 import { PenggunaModule } from "src/pengguna/pengguna.module";
 import { PengujiSidsem } from "src/entities/pengujiSidsem.entity";
+import { KonfigurasiModule } from "src/konfigurasi/konfigurasi.module";
+import { KonfigurasiService } from "src/konfigurasi/konfigurasi.service";
+import { Konfigurasi } from "src/entities/konfigurasi.entity";
 
 @Module({
   imports: [
@@ -25,12 +28,19 @@ import { PengujiSidsem } from "src/entities/pengujiSidsem.entity";
       BerkasSidsem,
       Topik,
       PengujiSidsem,
+      Konfigurasi,
     ]),
     AuthModule,
     RegistrasiTesisModule,
     PenggunaModule,
+    KonfigurasiModule,
   ],
   controllers: [RegistrasiSidsemController],
-  providers: [RegistrasiSidsemService, CustomStrategy, RegistrasiTesisService],
+  providers: [
+    RegistrasiSidsemService,
+    CustomStrategy,
+    RegistrasiTesisService,
+    KonfigurasiService,
+  ],
 })
 export class RegistrasiSidsemModule {}
diff --git a/src/registrasi-sidsem/registrasi-sidsem.service.ts b/src/registrasi-sidsem/registrasi-sidsem.service.ts
index de643d6189ee0907bcc2ef450d5aad9fe11dfb6c..07cb020c2aabcfb42927d591a402b7c238a25099 100644
--- a/src/registrasi-sidsem/registrasi-sidsem.service.ts
+++ b/src/registrasi-sidsem/registrasi-sidsem.service.ts
@@ -27,6 +27,9 @@ import { RegStatus } from "src/entities/pendaftaranTesis.entity";
 import { RegistrasiTesisService } from "src/registrasi-tesis/registrasi-tesis.service";
 import { BerkasSidsem } from "src/entities/berkasSidsem.entity";
 import { Pengguna, RoleEnum } from "src/entities/pengguna.entity";
+import { KonfigurasiService } from "src/konfigurasi/konfigurasi.service";
+import { KonfigurasiKeyEnum } from "src/entities/konfigurasi.entity";
+import * as dayjs from "dayjs";
 
 @Injectable()
 export class RegistrasiSidsemService {
@@ -41,6 +44,7 @@ export class RegistrasiSidsemService {
     private berkasSidsemRepo: Repository<BerkasSidsem>,
     private regTesisService: RegistrasiTesisService,
     private dataSource: DataSource,
+    private konfService: KonfigurasiService,
   ) {}
 
   private async getLatestPendaftaranSidsem(mhsId: string) {
@@ -84,10 +88,52 @@ export class RegistrasiSidsemService {
       .getOne();
   }
 
+  konfKeysMapping = {
+    [TipeSidsemEnum.SEMINAR_1]: {
+      start: KonfigurasiKeyEnum.AWAL_SEMPRO,
+      end: KonfigurasiKeyEnum.AKHIR_SEMPRO,
+    },
+    [TipeSidsemEnum.SEMINAR_2]: {
+      start: KonfigurasiKeyEnum.AWAL_SEM_TESIS,
+      end: KonfigurasiKeyEnum.AKHIR_SEM_TESIS,
+    },
+    [TipeSidsemEnum.SIDANG]: {
+      start: KonfigurasiKeyEnum.AWAL_SIDANG,
+      end: KonfigurasiKeyEnum.AKHIR_SIDANG,
+    },
+  };
+
+  private async getSidsemKonfOrFail(tipe: TipeSidsemEnum) {
+    const mapping = this.konfKeysMapping[tipe];
+    const [start, end] = await Promise.all([
+      this.konfService.getKonfigurasiByKey(mapping.start),
+      this.konfService.getKonfigurasiByKey(mapping.end),
+    ]);
+
+    if (!start || !end) {
+      throw new BadRequestException(
+        `Sidang seminar bertipe ${tipe} belum dikonfigurasi`,
+      );
+    }
+
+    return { start: new Date(start), end: new Date(end) };
+  }
+
   async create(
     mhsId: string,
     dto: CreatePengajuanSidsemDto,
   ): Promise<PengajuanSidsemIdDto> {
+    const { start, end } = await this.getSidsemKonfOrFail(dto.tipe);
+
+    if (
+      dayjs(new Date()).isBefore(dayjs(start).startOf("d")) ||
+      dayjs(new Date()).isAfter(dayjs(end).endOf("d"))
+    ) {
+      throw new BadRequestException(
+        "Sidang seminar belum dibuka atau sudah ditutup",
+      );
+    }
+
     const regTesis = await this.regTesisService.getNewestRegByMhsOrFail(mhsId);
 
     if (regTesis.status !== RegStatus.APPROVED) {