diff --git a/lib/core/src/lib/form/components/form-renderer.component.html b/lib/core/src/lib/form/components/form-renderer.component.html
index 054774dd47..217bf1b785 100644
--- a/lib/core/src/lib/form/components/form-renderer.component.html
+++ b/lib/core/src/lib/form/components/form-renderer.component.html
@@ -62,6 +62,10 @@
         <div *ngIf="currentRootElement.type === 'dynamic-table'" class="adf-container-widget">
             <adf-form-field [field]="currentRootElement" />
         </div>
+        <div class="adf-container-widget"
+             *ngIf="currentRootElement.type === 'readonly' && currentRootElement.field.params.field.type === 'dynamic-table'">
+            <adf-form-field [field]="currentRootElement.field"/>
+        </div>
     </div>
 </ng-template>
 
diff --git a/lib/core/src/lib/form/components/form-renderer.component.spec.ts b/lib/core/src/lib/form/components/form-renderer.component.spec.ts
index 5ae5f4cef5..3a3cac09f9 100644
--- a/lib/core/src/lib/form/components/form-renderer.component.spec.ts
+++ b/lib/core/src/lib/form/components/form-renderer.component.spec.ts
@@ -29,6 +29,7 @@ import {
     customWidgetFormWithVisibility,
     dateWidgetFormVisibilityMock,
     displayBigDecimalWidgetMock,
+    displayDynamicTableMock,
     displayTextWidgetFormVisibilityMock,
     formDateVisibility,
     formDisplayValueCombinedVisibility,
@@ -245,6 +246,13 @@ describe('Form Renderer Component', () => {
             expectInputElementValueIs(testingUtils, '#TextTwo', 'bbb');
             expectElementToBeVisible(testingUtils, 'Displayvalue0g6092');
         });
+
+        it('should render display value of dynamic-table widget', () => {
+            formRendererComponent.formDefinition = formService.parseForm(displayDynamicTableMock);
+            fixture.detectChanges();
+
+            expectElementToBeVisible(testingUtils, 'dynamic-table-id');
+        });
     });
 
     describe('Number widget', () => {
diff --git a/lib/core/src/lib/form/components/mock/form-renderer.component.mock.ts b/lib/core/src/lib/form/components/mock/form-renderer.component.mock.ts
index dca48247ac..7928a1b949 100644
--- a/lib/core/src/lib/form/components/mock/form-renderer.component.mock.ts
+++ b/lib/core/src/lib/form/components/mock/form-renderer.component.mock.ts
@@ -2345,3 +2345,70 @@ export const mockSectionVisibilityForm = {
         variables: []
     }
 };
+
+export const displayDynamicTableMock = {
+    id: 1,
+    name: 'Dynamic Table Form',
+    processDefinitionId: 'TestDynamicTable:0:00000',
+    processDefinitionName: 'Test Dynamic Table',
+    processDefinitionKey: 'TestDynamicTable',
+    taskId: 'fake-id',
+    taskName: 'Task Name',
+    taskDefinitionKey: 'sid-fake-id',
+    tabs: [],
+    fields: [
+        {
+            fieldType: 'FormFieldRepresentation',
+            id: 'dynamic-table-id',
+            name: 'Label1',
+            type: 'readonly',
+            value: [
+                {
+                    name: 'name',
+                    desc: 'desc'
+                }
+            ],
+            required: false,
+            readOnly: false,
+            overrideId: false,
+            colspan: 1,
+            placeholder: null,
+            minLength: 0,
+            maxLength: 0,
+            className: null,
+            params: {
+                existingColspan: 1,
+                maxColspan: 1,
+                field: {
+                    id: 'dynamic-table-id',
+                    name: 'Label1',
+                    type: 'dynamic-table',
+                    columnDefinitions: [
+                        {
+                            id: 'name',
+                            name: 'Name',
+                            type: 'String'
+                        },
+                        {
+                            id: 'desc',
+                            name: 'Desc',
+                            type: 'String'
+                        }
+                    ]
+                }
+            },
+            layout: {
+                row: -1,
+                column: -1,
+                colspan: 2
+            },
+            sizeX: 2,
+            sizeY: 2,
+            row: -1,
+            col: -1
+        }
+    ],
+    outcomes: [],
+    metadata: {},
+    variables: []
+};
diff --git a/lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.spec.ts b/lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.spec.ts
index 9d6d0b8b39..a0b8986463 100644
--- a/lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.spec.ts
+++ b/lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.spec.ts
@@ -110,6 +110,12 @@ describe('DynamicTableWidgetComponent', () => {
         expect(row.selected).toBeFalsy();
     });
 
+    it('should set readOnly to true when field type is readonly', () => {
+        widget.field.type = 'readonly';
+        widget.ngOnInit();
+        expect(widget.readOnly).toBeTrue();
+    });
+
     it('should reset selected row', () => {
         const row = { selected: false } as DynamicTableRow;
         widget.content.rows.push(row);
diff --git a/lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.ts b/lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.ts
index 37f9b56975..0669bd9657 100644
--- a/lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.ts
+++ b/lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.ts
@@ -69,6 +69,9 @@ export class DynamicTableWidgetComponent extends WidgetComponent implements OnIn
         if (this.field) {
             this.content = new DynamicTableModel(this.field, this.formService);
             this.visibilityService.refreshVisibility(this.field.form);
+            if (this.field.type === 'readonly') {
+                this.readOnly = true;
+            }
         }
     }