diff --git a/src/personal-offers/personal-offers.controller.spec.ts b/src/personal-offers/personal-offers.controller.spec.ts
index 9c7511d5a4479f4585fc825224efe37114a2652d..6e5ce91d59c7c13504f47bf2dc63d1dd63ae2fa4 100644
--- a/src/personal-offers/personal-offers.controller.spec.ts
+++ b/src/personal-offers/personal-offers.controller.spec.ts
@@ -67,6 +67,17 @@ describe('PersonalOffersController', () => {
   });
 
   describe('create personal offer', () => {
+    it('should return 204 if personal offer is empty', async () => {
+      const req = { user: { _id: '6036721022462b001334c4bb' } };
+      try {
+        await controller.create(req, createPersonalOffersDtoDataMock[3]);
+        // Fail test if above expression doesn't throw anything.
+        expect(true).toBe(false);
+      } catch (e) {
+        expect(e.message).toBe('Empty personal offer');
+        expect(e.status).toBe(204);
+      }
+    });
     it('should create personal offer for existing user and structure', async () => {
       const req = { user: { _id: '6036721022462b001334c4bb' } };
       expect(await controller.create(req, createPersonalOffersDtoDataMock[0])).toEqual(personalOffersDataMock[0]);
diff --git a/src/personal-offers/personal-offers.controller.ts b/src/personal-offers/personal-offers.controller.ts
index e1cab46742dcf46deca003f3b0e53f3e1b8eb330..ec75b313d390fdf8e876123827ea04164b5d7b65 100644
--- a/src/personal-offers/personal-offers.controller.ts
+++ b/src/personal-offers/personal-offers.controller.ts
@@ -1,4 +1,16 @@
-import { Body, Controller, Delete, Get, Param, Post, Put, Request, UseGuards } from '@nestjs/common';
+import {
+  Body,
+  Controller,
+  Delete,
+  Get,
+  HttpException,
+  HttpStatus,
+  Param,
+  Post,
+  Put,
+  Request,
+  UseGuards,
+} from '@nestjs/common';
 import { ApiBody, ApiParam, ApiTags } from '@nestjs/swagger';
 import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
 import { StructuresService } from '../structures/services/structures.service';
@@ -43,6 +55,10 @@ export class PersonalOffersController {
     @Body() createPersonalOfferDto: CreatePersonalOfferDto
   ): Promise<PersonalOfferDocument> {
     const user: IUser = req.user;
+    const isEmpty = Object.values(createPersonalOfferDto.personalOffer.categories).every((value) => value.length === 0);
+    if (isEmpty) {
+      throw new HttpException('Empty personal offer', HttpStatus.NO_CONTENT);
+    }
     const personalOfferDocument: PersonalOfferDocument = await this.personalOffersService.create(
       createPersonalOfferDto
     );
diff --git a/test/mock/data/personalOffers.mock.data.ts b/test/mock/data/personalOffers.mock.data.ts
index 04667b21960f0b55c9204069335372192f58a6bd..6af1b99d97b15e777ba14f65ff5c1875b739af9b 100644
--- a/test/mock/data/personalOffers.mock.data.ts
+++ b/test/mock/data/personalOffers.mock.data.ts
@@ -5,7 +5,7 @@ import { PersonalOffer } from '../../../src/personal-offers/schemas/personal-off
 export const personalOffersDtoDataMock: PersonalOfferDto[] = [
   {
     categories: {
-      onlineProcedures: [],
+      onlineProcedures: ['caf', 'cpam'],
       baseSkills: [],
       advancedSkills: [],
     },
@@ -33,6 +33,13 @@ export const personalOffersDtoDataMock: PersonalOfferDto[] = [
       advancedSkills: [],
     },
   },
+  {
+    categories: {
+      onlineProcedures: [],
+      baseSkills: [],
+      advancedSkills: [],
+    },
+  },
 ];
 
 export const createPersonalOffersDtoDataMock: CreatePersonalOfferDto[] = [
@@ -48,6 +55,10 @@ export const createPersonalOffersDtoDataMock: CreatePersonalOfferDto[] = [
     structureId: '6093ba0e2ab5775cfc01fffe',
     personalOffer: personalOffersDtoDataMock[0],
   },
+  {
+    structureId: '6093ba0e2ab5775cfc01ed3e',
+    personalOffer: personalOffersDtoDataMock[2],
+  },
 ];
 
 export const updatePersonalOffersDtoDataMock: PersonalOfferDto[] = [
@@ -87,7 +98,7 @@ export const personalOffersDataMock: PersonalOffer[] = [
   {
     _id: '1234ba0e2ab5775cfc01ed3e',
     categories: {
-      onlineProcedures: [],
+      onlineProcedures: ['caf', 'cpam'],
       baseSkills: [],
       advancedSkills: [],
     },