diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts
index d99c13821cc590198e9f9469b99ff28d42442d67..dfc0a01122ce5069ca2a48c8d4c3f229eae302cd 100644
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts
+++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts
@@ -1,5 +1,7 @@
-import { HttpError, ListResource } from '@alfa-client/tech-shared';
-import { Resource } from '@ngxp/rest';
+import { BinaryFileResource } from '@alfa-client/binary-file-shared';
+import { HttpError, isNotNil, ListResource, StateResource } from '@alfa-client/tech-shared';
+import { Resource, ResourceUri } from '@ngxp/rest';
+import { isNil } from 'lodash-es';
 
 export enum BescheidStatus {
   DRAFT = 'DRAFT',
@@ -26,8 +28,94 @@ export enum BescheidSendBy {
 
 export interface BescheidListResource extends ListResource {}
 
+// TODO: check later if this interface is needed and rename to UploadedFile if so.
 export interface UploadFileInProgress {
   loading: boolean;
   fileName?: string;
   error?: HttpError;
+  binaryFileResource?: BinaryFileResource;
+}
+
+export interface BescheidDocument {
+  loading: boolean;
+  fileName?: string;
+  error?: HttpError;
+  binaryFileResource?: BinaryFileResource;
+  creationMode?: BescheidDocumentCreationMode;
+  uri?: ResourceUri;
+}
+
+export enum BescheidDocumentCreationMode {
+  Automatically,
+  FromFile,
+}
+
+export function createEmptyBescheidDocument(): BescheidDocument {
+  return { loading: false };
+}
+
+export function createLoadingBescheidDocumentCreationFromFile(file: File): BescheidDocument {
+  return {
+    loading: true,
+    creationMode: BescheidDocumentCreationMode.FromFile,
+    fileName: file.name,
+  };
+}
+
+export function createFinishedBescheidDocumentCreationFromFile(
+  file: File,
+  binaryFileResource: BinaryFileResource,
+  resourceUri: ResourceUri,
+): BescheidDocument {
+  return {
+    loading: false,
+    creationMode: BescheidDocumentCreationMode.FromFile,
+    fileName: file.name,
+    uri: resourceUri,
+    binaryFileResource,
+  };
+}
+
+export function createErrorBescheidDocumentCreationFromFile(
+  file: File,
+  error: HttpError,
+): BescheidDocument {
+  return {
+    loading: false,
+    creationMode: BescheidDocumentCreationMode.FromFile,
+    fileName: file.name,
+    error,
+  };
+}
+
+export function createLoadedBescheidDocument(
+  binaryFileResource: BinaryFileResource,
+): BescheidDocument {
+  return { loading: false, binaryFileResource };
+}
+
+export function isBescheidDocumentCreated(bescheidDocument: BescheidDocument): boolean {
+  return (
+    !bescheidDocument.loading &&
+    isNotNil(bescheidDocument.creationMode) &&
+    isNotNil(bescheidDocument.binaryFileResource) &&
+    isNotNil(bescheidDocument.uri) &&
+    isNil(bescheidDocument.error)
+  );
+}
+
+export function createEmptyUploadingInProgress(): UploadFileInProgress {
+  return { loading: false };
+}
+
+export function createUploadingInProgress(file: File): UploadFileInProgress {
+  return { loading: true, fileName: file.name };
+}
+
+export function createFinishedUpload<T>(
+  file: File,
+  stateResource: StateResource<T>,
+  binaryFileResource?: BinaryFileResource,
+): UploadFileInProgress {
+  return { loading: false, fileName: file.name, error: stateResource.error, binaryFileResource };
 }
diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
index 16384a5b124c654c8b8f37fc861652fdf02ed73b..db20ac843c7d3ceca3af6d4e46b2418856ea7bce 100644
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
+++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
@@ -26,6 +26,7 @@ import {
   isLoaded,
   isNotEmpty,
   isNotNil,
+  mapToResource,
   sortByGermanDateStr,
 } from '@alfa-client/tech-shared';
 import {
@@ -37,6 +38,7 @@ import {
 import { getEmpfaenger } from '@alfa-client/vorgang-shared-ui';
 import { Injectable } from '@angular/core';
 import { ResourceUri, getUrl, hasLink } from '@ngxp/rest';
+import { isNil } from 'lodash-es';
 import {
   BehaviorSubject,
   Observable,
@@ -44,6 +46,7 @@ import {
   filter,
   first,
   map,
+  of,
   startWith,
   switchMap,
   take,
@@ -59,10 +62,16 @@ import { BescheidFacade } from './+state/bescheid.facade';
 import { BescheidLinkRel, BescheidListLinkRel } from './bescheid.linkrel';
 import {
   Bescheid,
+  BescheidDocument,
   BescheidListResource,
   BescheidResource,
   BescheidStatus,
   UploadFileInProgress,
+  createEmptyBescheidDocument,
+  createErrorBescheidDocumentCreationFromFile,
+  createFinishedBescheidDocumentCreationFromFile,
+  createLoadedBescheidDocument,
+  createLoadingBescheidDocumentCreationFromFile,
 } from './bescheid.model';
 import {
   buildCreateBescheidCommand,
@@ -363,6 +372,61 @@ export class BescheidService {
       );
   }
 
+  public createBescheidFromFile(
+    bescheid: BescheidResource,
+    file: File,
+  ): Observable<BescheidDocument> {
+    return this.binaryFileService
+      .uploadFile(bescheid, BescheidLinkRel.UPLOAD_BESCHEID_FILE, file, false)
+      .pipe(
+        filterIsLoadedOrHasError(),
+        switchMap((binaryFileStateResource: StateResource<BinaryFileResource>) => {
+          if (hasStateResourceError(binaryFileStateResource)) {
+            return of(
+              createErrorBescheidDocumentCreationFromFile(file, binaryFileStateResource.error),
+            );
+          }
+          return this.commandService
+            .createCommandByProps(
+              buildCreateBescheidDocumentFromFileProps(bescheid, binaryFileStateResource.resource),
+            )
+            .pipe(
+              filterIsLoadedOrHasError(),
+              map((commandStateResource: StateResource<CommandResource>) => {
+                if (hasStateResourceError(commandStateResource)) {
+                  return createErrorBescheidDocumentCreationFromFile(
+                    file,
+                    binaryFileStateResource.error,
+                  );
+                }
+                return createFinishedBescheidDocumentCreationFromFile(
+                  file,
+                  binaryFileStateResource.resource,
+                  getEffectedResourceUrl(commandStateResource.resource),
+                );
+              }),
+            );
+        }),
+        startWith(createLoadingBescheidDocumentCreationFromFile(file)),
+      );
+  }
+
+  // TODO: rename
+  public getBescheidDocument2(bescheidResource: BescheidResource): Observable<BescheidDocument> {
+    if (isNil(bescheidResource.bescheidDocument)) {
+      return of(createEmptyBescheidDocument());
+    }
+    return this.repository
+      .getResource(bescheidResource.bescheidDocument)
+      .pipe(
+        switchMap((documentResource: DocumentResource) =>
+          this.binaryFileService
+            .getFile(getUrl(documentResource, DocumentLinkRel.FILE))
+            .pipe(filter(isLoaded), mapToResource(), map(createLoadedBescheidDocument)),
+        ),
+      );
+  }
+
   handleUploadBescheidDocumentResponse(
     bescheid: BescheidResource,
     binaryFileStateResource: StateResource<BinaryFileResource>,
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.html
index c3dbf9f860e01001bac5d48159cdea64130d4b3f..d3880b400d91379c6f454bcbe429bcb47ab0571b 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.html
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.html
@@ -19,9 +19,11 @@
               [vorgangWithEingangResource]="vorgangWithEingangResource"
               [activeStep]="activeStep"
               [bescheidDraftStateResource]="bescheidStateResource"
+              [bescheidDocument]="bescheidDocument$ | async"
               (weiterClickEmitter)="onWeiter()"
               (stepChange)="onStepChange($event)"
               (vorgangAbgeschlossen)="onVorgangAbgeschlossen()"
+              (bescheidDocumentFile)="onBescheidDocumentUpload($event)"
             ></alfa-bescheid-wizard>
           </form>
         </ng-container>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts
index acdcd13501fda10ff1f4ed22dc6750ba5293ce26..f0f03048e070e30fb615295dc2c99e068b9791e2 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts
@@ -1,4 +1,10 @@
-import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared';
+import {
+  BescheidDocument,
+  BescheidResource,
+  BescheidService,
+  createEmptyBescheidDocument,
+  isBescheidDocumentCreated,
+} from '@alfa-client/bescheid-shared';
 import {
   StateResource,
   createEmptyStateResource,
@@ -36,6 +42,7 @@ export class BescheidWizardContainerComponent implements OnInit, OnDestroy {
   public bescheidDraftStateResource$: Observable<StateResource<BescheidResource>> = of(
     createEmptyStateResource<BescheidResource>(),
   );
+  public bescheidDocument$: Observable<BescheidDocument> = of(createEmptyBescheidDocument());
 
   public activeStep: number = 1;
   bescheidStateResource: StateResource<BescheidResource> = createEmptyStateResource();
@@ -69,9 +76,13 @@ export class BescheidWizardContainerComponent implements OnInit, OnDestroy {
     if (hasLink(this.vorgangWithEingangResource, VorgangWithEingangLinkRel.BESCHEID_DRAFT)) {
       this.bescheidDraftStateResource$ = this.bescheidService.getBescheidDraft().pipe(
         tap((bescheidDraftStateResource: StateResource<BescheidResource>) => {
+          console.info(bescheidDraftStateResource);
           this.bescheidStateResource = bescheidDraftStateResource;
           if (isLoaded(bescheidDraftStateResource)) {
             this.formService.patchValues(bescheidDraftStateResource.resource);
+            this.bescheidDocument$ = this.bescheidService.getBescheidDocument2(
+              bescheidDraftStateResource.resource,
+            );
           }
         }),
       );
@@ -132,4 +143,17 @@ export class BescheidWizardContainerComponent implements OnInit, OnDestroy {
   public onVorgangAbgeschlossen(): void {
     this.dialogRef.close();
   }
+
+  public onBescheidDocumentUpload(bescheidDocumentFile: File): void {
+    this.bescheidDocument$ = this.bescheidService
+      .createBescheidFromFile(this.bescheidStateResource.resource, bescheidDocumentFile)
+      .pipe(
+        tap((bescheidDocument: BescheidDocument) => {
+          // TODO: extract to method
+          if (isBescheidDocumentCreated(bescheidDocument)) {
+            this.formService.setBescheidDocumentFile(bescheidDocument.uri);
+          }
+        }),
+      );
+  }
 }
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..723b7316760098955cb3b2176d0164201f29d2f4
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component.html
@@ -0,0 +1,11 @@
+<div [formGroup]="formService.form" class="mt-4">
+  <ods-file-upload-editor
+    [attr.data-test-id]="'attachment-hochladen-upload-editor' + formServiceClass.FIELD_ATTACHMENTS"
+    [parentFormArrayName]="formServiceClass.FIELD_ATTACHMENTS"
+    [uploadInProgress]="upload$ | async"
+    (newFile)="uploadFile($event)"
+    [fileLinkList]="getFileLinkList()"
+    label="Anhang hochladen"
+  >
+  </ods-file-upload-editor>
+</div>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fa6148ad35786ba9d7782a8b1219ab36961613a6
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component.spec.ts
@@ -0,0 +1,55 @@
+import { BescheidService } from '@alfa-client/bescheid-shared';
+import { BinaryFileResource } from '@alfa-client/binary-file-shared';
+import { createEmptyStateResource } from '@alfa-client/tech-shared';
+import { mock, useFromMock } from '@alfa-client/test-utils';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
+import { FileUploadEditorComponent } from '@ods/component';
+import { MockComponent } from 'ng-mocks';
+import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles';
+import { BescheidFormService } from '../../bescheid.formservice';
+import { BescheidWizardAttachmentHochladenButtonComponent } from './bescheid-wizard-attachment-hochladen-button.component';
+
+describe('BescheidWizardAttachmentHochladenButtonComponent', () => {
+  let component: BescheidWizardAttachmentHochladenButtonComponent;
+  let fixture: ComponentFixture<BescheidWizardAttachmentHochladenButtonComponent>;
+
+  let formService: BescheidFormService;
+
+  beforeEach(() => {
+    formService = new BescheidFormService(
+      new UntypedFormBuilder(),
+      useFromMock(mock(BescheidService)),
+    );
+  });
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [
+        BescheidWizardAttachmentHochladenButtonComponent,
+        MockComponent(FileUploadEditorComponent),
+      ],
+      providers: [
+        {
+          provide: BescheidFormService,
+          useValue: formService,
+        },
+      ],
+      imports: [ReactiveFormsModule],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(BescheidWizardAttachmentHochladenButtonComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  it('should set upload$ to empty state resource', () => {
+    expect(component.upload$).toBeObservable(
+      singleColdCompleted(createEmptyStateResource<BinaryFileResource>()),
+    );
+  });
+});
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b97152c17cfd432ef6853c2f0e6fe3b94c7506aa
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component.ts
@@ -0,0 +1,25 @@
+import { BinaryFileResource } from '@alfa-client/binary-file-shared';
+import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
+import { Component } from '@angular/core';
+import { Observable, of } from 'rxjs';
+import { BescheidFormService } from '../../bescheid.formservice';
+
+@Component({
+  selector: 'alfa-bescheid-wizard-attachment-hochladen-button',
+  templateUrl: './bescheid-wizard-attachment-hochladen-button.component.html',
+})
+export class BescheidWizardAttachmentHochladenButtonComponent {
+  public upload$: Observable<StateResource<BinaryFileResource>> = of(
+    createEmptyStateResource<BinaryFileResource>(),
+  );
+
+  readonly formServiceClass = BescheidFormService;
+
+  constructor(public readonly formService: BescheidFormService) {}
+
+  public uploadFile(file: File): void {}
+
+  public getFileLinkList(): string[] {
+    return [];
+  }
+}
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..a1134f6e0a25efaf29874841d16e04e3d1458ca3
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component.html
@@ -0,0 +1,13 @@
+<div class="mt-4">
+  <ods-button-card
+    *ngIf="bescheidResource | hasLink: bescheidLinkRel.CREATE_DOCUMENT"
+    class="w-72"
+    [isLoading]="(createBescheidDocumentCommandStateResource$ | async).loading"
+    (click)="createBescheidDocument()"
+    data-test-id="create-bescheid-document-button"
+    text="Bescheiddokument"
+    subText="automatisch erstellen"
+  >
+    <ods-bescheid-generate-icon icon />
+  </ods-button-card>
+</div>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c7b4fdb157a145808589f069a2d66444559fe2ff
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { BescheidWizardAutomatischErstellenButtonComponent } from './bescheid-wizard-automatisch-erstellen-button.component';
+
+describe('BescheidWizardAutomatischErstellenButtonComponent', () => {
+  let component: BescheidWizardAutomatischErstellenButtonComponent;
+  let fixture: ComponentFixture<BescheidWizardAutomatischErstellenButtonComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [BescheidWizardAutomatischErstellenButtonComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(BescheidWizardAutomatischErstellenButtonComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..390e4f7ca3d011f8b63fb50a7d84bca9eda4ca7f
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component.ts
@@ -0,0 +1,20 @@
+import { BescheidLinkRel, BescheidResource } from '@alfa-client/bescheid-shared';
+import { CommandResource } from '@alfa-client/command-shared';
+import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
+import { Component, Input } from '@angular/core';
+import { Observable, of } from 'rxjs';
+
+@Component({
+  selector: 'alfa-bescheid-wizard-automatisch-erstellen-button',
+  templateUrl: './bescheid-wizard-automatisch-erstellen-button.component.html',
+})
+export class BescheidWizardAutomatischErstellenButtonComponent {
+  @Input() bescheidResource: BescheidResource;
+
+  public createBescheidDocumentCommandStateResource$: Observable<StateResource<CommandResource>> =
+    of(createEmptyStateResource<CommandResource>());
+
+  readonly bescheidLinkRel = BescheidLinkRel;
+
+  public createBescheidDocument(): void {}
+}
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.html
index fdf593827c9b7044496b6255bf4df35453fbfc72..d70aa63851431f0d24359c12685ebf9428319bb7 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.html
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.html
@@ -13,6 +13,9 @@
     (vorgangAbgeschlossen)="vorgangAbgeschlossen.emit()"
   ></alfa-bescheid-wizard-antrag-bescheiden>
   <alfa-bescheid-wizard-dokumente-hochladen
+    [bescheidResource]="bescheidDraftStateResource.resource"
+    [bescheidDocument]="bescheidDocument"
     *ngIf="activeStep === 2"
+    (bescheidDocumentFile)="bescheidDocumentFile.emit($event)"
   ></alfa-bescheid-wizard-dokumente-hochladen>
 </div>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts
index 5fd217cfc681d17e30d0469f785bc38614d4166c..8454f7635f46db9873e3075ba980a63dd398cb00 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts
@@ -163,6 +163,10 @@ describe('BescheidWizardComponent', () => {
         return getElementFromFixture(fixture, 'alfa-bescheid-wizard-dokumente-hochladen');
       }
 
+      function getElementComponent(): BescheidWizardDokumenteHochladenComponent {
+        return getElementFromFixtureByType(fixture, BescheidWizardDokumenteHochladenComponent);
+      }
+
       it('should show', () => {
         givenActiveStep(2);
         givenLoadedBescheidStateResrouce();
@@ -183,6 +187,19 @@ describe('BescheidWizardComponent', () => {
 
         expect(getElement()).not.toBeInstanceOf(HTMLElement);
       });
+
+      describe('input', () => {
+        it('should set bescheidResource', () => {
+          givenActiveStep(2);
+          const bescheidStateResource: StateResource<BescheidResource> =
+            givenLoadedBescheidStateResrouce();
+          component.bescheidDraftStateResource = bescheidStateResource;
+
+          fixture.detectChanges();
+
+          expect(getElementComponent().bescheidResource).toBe(bescheidStateResource.resource);
+        });
+      });
     });
   });
 
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.ts
index 5354a0fe4b19a634bc7e1b50552074356e2b67a0..b786da76c457a0c82a0fd2726a0ac67d6b847f1c 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.ts
@@ -1,4 +1,4 @@
-import { BescheidResource } from '@alfa-client/bescheid-shared';
+import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared';
 import { StateResource } from '@alfa-client/tech-shared';
 import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Component, EventEmitter, Input, Output } from '@angular/core';
@@ -11,8 +11,10 @@ export class BescheidWizardComponent {
   @Input() vorgangWithEingangResource: VorgangWithEingangResource;
   @Input() bescheidDraftStateResource: StateResource<BescheidResource>;
   @Input() activeStep: number;
+  @Input() bescheidDocument: BescheidDocument;
 
   @Output() stepChange = new EventEmitter<number>();
   @Output() weiterClickEmitter = new EventEmitter<void>();
   @Output() vorgangAbgeschlossen: EventEmitter<void> = new EventEmitter<void>();
+  @Output() bescheidDocumentFile: EventEmitter<File> = new EventEmitter<File>();
 }
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..2ce63d86799045ef602242baae9802e009dc279a
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component.html
@@ -0,0 +1,13 @@
+<div [formGroup]="formService.form">
+  <ods-single-file-upload-editor
+    [uploadInProgress]="loading"
+    class="w-72"
+    attr.data-test-id="vorgang-bescheiden-upload-editor"
+    [formControlName]="formServiceClass.FIELD_BESCHEID_DOCUMENT"
+    (newFile)="uploadFile($event)"
+  >
+    <ods-bescheid-upload-icon icon></ods-bescheid-upload-icon>
+    <ods-spinner-icon spinner size="extra-large"></ods-spinner-icon>
+    <div text class="text-center">Bescheiddokument hochladen</div>
+  </ods-single-file-upload-editor>
+</div>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..07b81eb48ad3c33c48545f3cc44c7d6e3d8d4cb7
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component.spec.ts
@@ -0,0 +1,42 @@
+import { BescheidService } from '@alfa-client/bescheid-shared';
+import { HasLinkPipe } from '@alfa-client/tech-shared';
+import { mock, useFromMock } from '@alfa-client/test-utils';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
+import { BescheidFormService } from '../../bescheid.formservice';
+import { BescheidWizardDokumentHochladenButtonComponent } from './bescheid-wizard-dokument-hochladen-button.component';
+
+describe('BescheidWizardDokumentHochladenButtonComponent', () => {
+  let component: BescheidWizardDokumentHochladenButtonComponent;
+  let fixture: ComponentFixture<BescheidWizardDokumentHochladenButtonComponent>;
+
+  let formService: BescheidFormService;
+
+  beforeEach(() => {
+    formService = new BescheidFormService(
+      new UntypedFormBuilder(),
+      useFromMock(mock(BescheidService)),
+    );
+  });
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [BescheidWizardDokumentHochladenButtonComponent, HasLinkPipe],
+      providers: [
+        {
+          provide: BescheidFormService,
+          useValue: formService,
+        },
+      ],
+      imports: [ReactiveFormsModule],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(BescheidWizardDokumentHochladenButtonComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..042291ba3a68001d89203f9c36753fb4a727f2f9
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component.ts
@@ -0,0 +1,22 @@
+import { BescheidLinkRel } from '@alfa-client/bescheid-shared';
+import { Component, EventEmitter, Input, Output } from '@angular/core';
+import { BescheidFormService } from '../../bescheid.formservice';
+
+@Component({
+  selector: 'alfa-bescheid-wizard-dokument-hochladen-button',
+  templateUrl: './bescheid-wizard-dokument-hochladen-button.component.html',
+})
+export class BescheidWizardDokumentHochladenButtonComponent {
+  @Input() loading: boolean = false;
+
+  @Output() file: EventEmitter<File> = new EventEmitter<File>();
+
+  readonly bescheidLinkRel = BescheidLinkRel;
+  readonly formServiceClass = BescheidFormService;
+
+  constructor(public readonly formService: BescheidFormService) {}
+
+  public uploadFile(file: File): void {
+    this.file.emit(file);
+  }
+}
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..b9c3580b91a72921de454bf85ec460d643b49a73
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component.html
@@ -0,0 +1,36 @@
+<p
+  *ngIf="showMissingBescheidDocumentError"
+  data-test-id="missing-bescheid-document-error-message"
+  class="text-base text-error"
+>
+  Bitte fügen Sie ein Bescheiddokument hinzu.
+</p>
+<ods-attachment-wrapper>
+  <ng-container *ngIf="bescheidDocument.binaryFileResource">
+    <alfa-binary-file2-container
+      *ngIf="!bescheidDocument.loading"
+      [file]="bescheidDocument.binaryFileResource"
+      [deletable]="deletable"
+      (startDelete)="delete.emit()"
+    >
+    </alfa-binary-file2-container>
+  </ng-container>
+  <ods-attachment
+    *ngIf="bescheidDocument.loading || bescheidDocument.error"
+    errorCaption="Fehler beim Hochladen"
+    [loadingCaption]="bescheidDocument.fileName"
+    [attr.data-test-id]="'upload-bescheid-document-error-' + !!bescheidDocument.error"
+    [isLoading]="bescheidDocument.loading"
+    [errorMessages]="bescheidDocument.error | convertProblemDetailToErrorMessages"
+    description="Bescheiddokument wird hochgeladen"
+  ></ods-attachment>
+  <!--  <ods-attachment-->
+  <!--    *ngIf="bescheidDocumentCreation.loading || bescheidDocumentCreation.error"-->
+  <!--    errorCaption="Fehler beim automatischen Erstellen"-->
+  <!--    loadingCaption="Bescheiddokument"-->
+  <!--    description="Bescheiddokument wird erstellt"-->
+  <!--    [isLoading]="bescheidDocumentCreation.loading"-->
+  <!--    [errorMessages]="createDocumentErrorMessages"-->
+  <!--    data-test-id="create-bescheid-document-attachment"-->
+  <!--  ></ods-attachment>-->
+</ods-attachment-wrapper>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a74767e4e4605ad27c470e0b5bd01c4c28809262
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { BescheidWizardDokumentComponent } from './bescheid-wizard-dokument.component';
+
+describe('BescheidWizardDokumentComponent', () => {
+  let component: BescheidWizardDokumentComponent;
+  let fixture: ComponentFixture<BescheidWizardDokumentComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [BescheidWizardDokumentComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(BescheidWizardDokumentComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0ef91df325f1b672eccbbbdf7720e6a945168a47
--- /dev/null
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component.ts
@@ -0,0 +1,15 @@
+import { BescheidDocument } from '@alfa-client/bescheid-shared';
+import { Component, EventEmitter, Input, Output } from '@angular/core';
+
+@Component({
+  selector: 'alfa-bescheid-wizard-dokument',
+  templateUrl: './bescheid-wizard-dokument.component.html',
+})
+export class BescheidWizardDokumentComponent {
+  @Input() bescheidDocument: BescheidDocument;
+  @Input() public deletable: boolean;
+
+  @Output() delete: EventEmitter<void> = new EventEmitter<void>();
+
+  public showMissingBescheidDocumentError: boolean;
+}
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.html
index 4154d6e3a9083f35fc3a4307dc5674c5d1586473..b641678786aa7d807ff898c1d0298c00ee906b1a 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.html
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.html
@@ -2,10 +2,16 @@
   <div>
     <alfa-bescheid-wizard-step-title label="Antrag bescheiden"></alfa-bescheid-wizard-step-title>
     <alfa-bescheid-wizard-step-title label="Dokumente hochladen"></alfa-bescheid-wizard-step-title>
-    <alfa-bescheid-wizard-dokumente-hochladen-form></alfa-bescheid-wizard-dokumente-hochladen-form>
+    <alfa-bescheid-wizard-dokumente-hochladen-form
+      [bescheidResource]="bescheidResource"
+      [bescheidDocument]="bescheidDocument"
+      (bescheidDocumentFile)="bescheidDocumentFile.emit($event)"
+    ></alfa-bescheid-wizard-dokumente-hochladen-form>
   </div>
   <alfa-bescheid-wizard-summary>
     <alfa-bescheid-wizard-antrag-bescheiden-summary></alfa-bescheid-wizard-antrag-bescheiden-summary>
-    <alfa-bescheid-wizard-dokumente-hochladen-summary></alfa-bescheid-wizard-dokumente-hochladen-summary>
+    <alfa-bescheid-wizard-dokumente-hochladen-summary
+      [bescheidDocument]="bescheidDocument"
+    ></alfa-bescheid-wizard-dokumente-hochladen-summary>
   </alfa-bescheid-wizard-summary>
 </div>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.spec.ts
index c2b26ac9f7e03a44fc7c1646678849ff6084ca4e..ec4756c668ef275e26b3a469c899980ca49b2ead 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.spec.ts
@@ -1,5 +1,8 @@
+import { BescheidResource } from '@alfa-client/bescheid-shared';
+import { getElementFromFixtureByType } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
+import { createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid';
 import { BescheidWizardAntragBescheidenSummaryComponent } from '../antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component';
 import { BescheidWizardStepTitleComponent } from '../step-title/bescheid-wizard-step-title.component';
 import { BescheidWizardSummaryComponent } from '../summary/bescheid-wizard-summary.component';
@@ -31,4 +34,23 @@ describe('BescheidWizardDokumenteHochladenComponent', () => {
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  describe('template', () => {
+    describe('alfa-bescheid-wizard-dokumente-hochladen-form', () => {
+      function getElementComponent(): BescheidWizardDokumenteHochladenFormComponent {
+        return getElementFromFixtureByType(fixture, BescheidWizardDokumenteHochladenFormComponent);
+      }
+
+      describe('input', () => {
+        it('should set bescheidResource', () => {
+          const bescheidResource: BescheidResource = createBescheidResource();
+          component.bescheidResource = bescheidResource;
+
+          fixture.detectChanges();
+
+          expect(getElementComponent().bescheidResource).toBe(bescheidResource);
+        });
+      });
+    });
+  });
 });
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.ts
index 03327ed43a038acb1e8cd3c37ef1f595d2f26ca4..b68be71ca535da08eae644335d68503c6113652a 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.ts
@@ -1,7 +1,13 @@
-import { Component } from '@angular/core';
+import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared';
+import { Component, EventEmitter, Input, Output } from '@angular/core';
 
 @Component({
   selector: 'alfa-bescheid-wizard-dokumente-hochladen',
   templateUrl: './bescheid-wizard-dokumente-hochladen.component.html',
 })
-export class BescheidWizardDokumenteHochladenComponent {}
+export class BescheidWizardDokumenteHochladenComponent {
+  @Input() bescheidResource: BescheidResource;
+  @Input() bescheidDocument: BescheidDocument;
+
+  @Output() bescheidDocumentFile: EventEmitter<File> = new EventEmitter<File>();
+}
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.html
index 4bd1961e89455800dbdddd34d3de0e7904f9479a..a0a5e6be97ac2c1759e2868b71d10d497d5ea811 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.html
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.html
@@ -1 +1,7 @@
-<p>bescheid-wizard-dokumente-hochladen-form works!</p>
+<alfa-bescheid-wizard-automatisch-erstellen-button></alfa-bescheid-wizard-automatisch-erstellen-button>
+<alfa-bescheid-wizard-dokument-hochladen-button
+  *ngIf="bescheidResource | hasLink: bescheidLinkRel.UPLOAD_BESCHEID_FILE"
+  [loading]="bescheidDocument.loading"
+  (file)="bescheidDocumentFile.emit($event)"
+></alfa-bescheid-wizard-dokument-hochladen-button>
+<alfa-bescheid-wizard-attachment-hochladen-button></alfa-bescheid-wizard-attachment-hochladen-button>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.spec.ts
index 417a480c13b49e280112f8a4a85e69663902b722..e9b42d75bd59860747f72cb14f2e01340f32a674 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.spec.ts
@@ -1,4 +1,9 @@
+import { existsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { MockComponent } from 'ng-mocks';
+import { BescheidWizardAttachmentHochladenButtonComponent } from '../../attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component';
+import { BescheidWizardAutomatischErstellenButtonComponent } from '../../automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component';
+import { BescheidWizardDokumentHochladenButtonComponent } from '../../dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component';
 import { BescheidWizardDokumenteHochladenFormComponent } from './bescheid-wizard-dokumente-hochladen-form.component';
 
 describe('BescheidWizardDokumenteHochladenFormComponent', () => {
@@ -7,7 +12,12 @@ describe('BescheidWizardDokumenteHochladenFormComponent', () => {
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      declarations: [BescheidWizardDokumenteHochladenFormComponent],
+      declarations: [
+        BescheidWizardDokumenteHochladenFormComponent,
+        MockComponent(BescheidWizardAutomatischErstellenButtonComponent),
+        MockComponent(BescheidWizardDokumentHochladenButtonComponent),
+        MockComponent(BescheidWizardAttachmentHochladenButtonComponent),
+      ],
     }).compileComponents();
 
     fixture = TestBed.createComponent(BescheidWizardDokumenteHochladenFormComponent);
@@ -18,4 +28,24 @@ describe('BescheidWizardDokumenteHochladenFormComponent', () => {
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  describe('template', () => {
+    describe('bescheid automatisch erstellen button', () => {
+      it('should show', () => {
+        existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-automatisch-erstellen-button');
+      });
+    });
+
+    describe('bescheid dokument hochladen button', () => {
+      it('should show', () => {
+        existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-dokument-hochladen-button');
+      });
+    });
+
+    describe('attachment hochladen button', () => {
+      it('should show', () => {
+        existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-attachment-hochladen-button');
+      });
+    });
+  });
 });
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.ts
index 63df23e526cb61c40dbf89b8c459da46d6f6d836..1ec5a3c325034e9e6f62bae522064da43b969861 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component.ts
@@ -1,7 +1,15 @@
-import { Component } from '@angular/core';
+import { BescheidDocument, BescheidLinkRel, BescheidResource } from '@alfa-client/bescheid-shared';
+import { Component, EventEmitter, Input, Output } from '@angular/core';
 
 @Component({
   selector: 'alfa-bescheid-wizard-dokumente-hochladen-form',
   templateUrl: './bescheid-wizard-dokumente-hochladen-form.component.html',
 })
-export class BescheidWizardDokumenteHochladenFormComponent {}
+export class BescheidWizardDokumenteHochladenFormComponent {
+  @Input() bescheidResource: BescheidResource;
+  @Input() bescheidDocument: BescheidDocument;
+
+  @Output() bescheidDocumentFile: EventEmitter<File> = new EventEmitter<File>();
+
+  readonly bescheidLinkRel = BescheidLinkRel;
+}
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/summary/bescheid-wizard-dokumente-hochladen-summary.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/summary/bescheid-wizard-dokumente-hochladen-summary.component.html
index a1b71d424a4b35b04bf8b0aee379001bc748bd21..c9889a3e6c20871e81c79e83156694a3e14f7d08 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/summary/bescheid-wizard-dokumente-hochladen-summary.component.html
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/summary/bescheid-wizard-dokumente-hochladen-summary.component.html
@@ -1 +1,4 @@
-<p>bescheid-wizard-dokumente-hochladen-summary works!</p>
+<alfa-bescheid-wizard-dokument
+  [bescheidDocument]="bescheidDocument"
+  [deletable]="true"
+></alfa-bescheid-wizard-dokument>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/summary/bescheid-wizard-dokumente-hochladen-summary.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/summary/bescheid-wizard-dokumente-hochladen-summary.component.ts
index b2d4ba96fc074645474734a6d9a68e2f030e6eeb..df69ec571d4b30beeab8b4c8d94164ae6575c725 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/summary/bescheid-wizard-dokumente-hochladen-summary.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/summary/bescheid-wizard-dokumente-hochladen-summary.component.ts
@@ -1,7 +1,10 @@
-import { Component } from '@angular/core';
+import { BescheidDocument } from '@alfa-client/bescheid-shared';
+import { Component, Input } from '@angular/core';
 
 @Component({
   selector: 'alfa-bescheid-wizard-dokumente-hochladen-summary',
   templateUrl: './bescheid-wizard-dokumente-hochladen-summary.component.html',
 })
-export class BescheidWizardDokumenteHochladenSummaryComponent {}
+export class BescheidWizardDokumenteHochladenSummaryComponent {
+  @Input() bescheidDocument: BescheidDocument;
+}
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts
index 31696be2b3e2dc22b17bd7820b937a5f6ce4e52c..74c724827e90a1ffbc09b66c30d86e68540b6cdd 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts
@@ -16,6 +16,7 @@ import {
 import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Injectable } from '@angular/core';
 import {
+  FormControl,
   UntypedFormArray,
   UntypedFormBuilder,
   UntypedFormControl,
@@ -125,4 +126,11 @@ export class BescheidFormService extends AbstractFormService {
   ): void {
     this.vorgangWithEingangResource = vorgangWithEingangResource;
   }
+
+  public setBescheidDocumentFile(uri: ResourceUri): void {
+    const control: FormControl = <FormControl>(
+      this.form.controls[BescheidFormService.FIELD_BESCHEID_DOCUMENT]
+    );
+    control.patchValue(uri);
+  }
 }
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid.module.ts b/alfa-client/libs/bescheid/src/lib/bescheid.module.ts
index eef63479c2c4ee15d57d38c7d1eeb2cc55d2092c..57b3e1bee22fe4d975d4524dbdfa4d8a999dbee3 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid.module.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid.module.ts
@@ -13,12 +13,22 @@ import { DocumentInBescheidContainerComponent } from './bescheid-list-in-vorgang
 import { BeschiedenDateContainerComponent } from './beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component';
 import { BeschiedenDateInVorgangContainerComponent } from './beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component';
 
-import { ButtonWithSpinnerComponent } from '@ods/component';
 import {
+  ButtonWithSpinnerComponent,
+  FileUploadEditorComponent,
+  SingleFileUploadEditorComponent,
+} from '@ods/component';
+import {
+  AttachmentComponent,
+  AttachmentWrapperComponent,
+  BescheidGenerateIconComponent,
   BescheidStatusTextComponent,
+  BescheidUploadIconComponent,
   BescheidWrapperComponent,
+  ButtonCardComponent,
   CloseIconComponent,
   RadioButtonCardComponent,
+  SpinnerIconComponent,
   StampIconComponent,
 } from '@ods/system';
 import { BescheidWizardContainerComponent } from './bescheid-wizard-container/bescheid-wizard-container.component';
@@ -27,9 +37,13 @@ import { BescheidWizardAbschliessenDialogContainerComponent } from './bescheid-w
 import { BescheidWizardAntragBescheidenComponent } from './bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component';
 import { BescheidWizardAntragBescheidenFormComponent } from './bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component';
 import { BescheidWizardAntragBescheidenSummaryComponent } from './bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component';
+import { BescheidWizardAttachmentHochladenButtonComponent } from './bescheid-wizard-container/bescheid-wizard/attachment-hochladen-button/bescheid-wizard-attachment-hochladen-button.component';
+import { BescheidWizardAutomatischErstellenButtonComponent } from './bescheid-wizard-container/bescheid-wizard/automatisch-erstellen-button/bescheid-wizard-automatisch-erstellen-button.component';
 import { BescheidWizardComponent } from './bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component';
 import { BescheidWizardCancelButtonComponent } from './bescheid-wizard-container/bescheid-wizard/cancel-button/bescheid-wizard-cancel-button.component';
 import { BescheidWizardCancelDialogContainerComponent } from './bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component';
+import { BescheidWizardDokumentHochladenButtonComponent } from './bescheid-wizard-container/bescheid-wizard/dokument-hochladen-button/bescheid-wizard-dokument-hochladen-button.component';
+import { BescheidWizardDokumentComponent } from './bescheid-wizard-container/bescheid-wizard/dokument/bescheid-wizard-dokument.component';
 import { BescheidWizardDokumenteHochladenComponent } from './bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component';
 import { BescheidWizardDokumenteHochladenFormComponent } from './bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/form/bescheid-wizard-dokumente-hochladen-form.component';
 import { BescheidWizardDokumenteHochladenSummaryComponent } from './bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/summary/bescheid-wizard-dokumente-hochladen-summary.component';
@@ -53,6 +67,14 @@ import { BescheidWizardWeiterButtonComponent } from './bescheid-wizard-container
     CloseIconComponent,
     ButtonWithSpinnerComponent,
     RadioButtonCardComponent,
+    ButtonCardComponent,
+    BescheidGenerateIconComponent,
+    BescheidUploadIconComponent,
+    SpinnerIconComponent,
+    SingleFileUploadEditorComponent,
+    FileUploadEditorComponent,
+    AttachmentWrapperComponent,
+    AttachmentComponent,
   ],
   declarations: [
     BescheidInVorgangContainerComponent,
@@ -79,6 +101,10 @@ import { BescheidWizardWeiterButtonComponent } from './bescheid-wizard-container
     BescheidWizardDokumenteHochladenSummaryComponent,
     BescheidWizardAbschliessenButtonComponent,
     BescheidWizardAbschliessenDialogContainerComponent,
+    BescheidWizardAutomatischErstellenButtonComponent,
+    BescheidWizardDokumentHochladenButtonComponent,
+    BescheidWizardAttachmentHochladenButtonComponent,
+    BescheidWizardDokumentComponent,
   ],
   exports: [
     BescheidInVorgangContainerComponent,
diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts
index 313d82a48004cafc30d33be072bdec47f653efd9..6b4ef3b16e19262bc008bbfe2b0eb2ce89e30382 100644
--- a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts
+++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts
@@ -38,6 +38,8 @@ export interface StateResource<T> {
   error?: HttpError;
 }
 
+export interface FileStateResource<T> {}
+
 export function createEmptyStateResource<T>(loading: boolean = false): StateResource<T> {
   return createStateResource(null, loading);
 }