diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.html b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.html
index df52e22..7472b7b 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.html
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.html
@@ -34,8 +34,8 @@
       </ag-grid-angular>
       <app-spinner [isRunning]="sandbox.distributionGroupLoading$ | async"></app-spinner>
       <div class="distribution-group-member-container">
-        <app-distribution-group-members class="distribution-group-member"></app-distribution-group-members>
-        <app-distribution-group-member-postcodes class="distribution-group-member-postcodes"></app-distribution-group-member-postcodes>
+        <app-distribution-group-members (rowSelectionChanged)="plzValueId = $event" class="distribution-group-member"></app-distribution-group-members>
+        <app-distribution-group-member-postcodes [plzValueId]="plzValueId" class="distribution-group-member-postcodes"></app-distribution-group-member-postcodes>
       </div>
     </div>
     <app-distribution-group-details class="distribution-group-form"></app-distribution-group-details>
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.ts
index a3703c2..7047eb0 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.ts
@@ -28,6 +28,7 @@
   public frameworkComponents: { setFilterComponent: any };
   public api: GridApi | null | undefined;
   public RolesEnum = RolesEnum;
+  public plzValueId: string;
 
   constructor(public sandbox: DistributionGroupSandbox) {
     super();
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-member-postcodes/distribution-group-member-postcodes.component.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-member-postcodes/distribution-group-member-postcodes.component.ts
index 22c8666..c77ab40 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-member-postcodes/distribution-group-member-postcodes.component.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-member-postcodes/distribution-group-member-postcodes.component.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 import { DistributionGroupSandbox, PostcodeInterface } from '@grid-failure-information-app/app/pages/distribution-group/distribution-group.sandbox';
-import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
+import { Component, OnInit, ViewChild, ElementRef, Input } from '@angular/core';
 import { BaseList } from '@grid-failure-information-app/shared/components/base-components/base.list';
 import { Subscription } from 'rxjs';
 import { DISTRIBUTION_GROUP_MEMBER_POSTCODES_COLDEF } from '@grid-failure-information-app/app/pages/distribution-group/distribution-group-member-postcodes/distribution-group-member-postcodes-col-def';
@@ -31,6 +31,14 @@
   public columnDefinition: any = DISTRIBUTION_GROUP_MEMBER_POSTCODES_COLDEF;
   public frameworkComponents: { setFilterComponent: any };
 
+  @Input() set plzValueId(value: string) {
+    if (!this._currentPlzValueId || this._currentPlzValueId !== value) {
+      this._currentPlzValueId = value;
+      this.postcodeInput.nativeElement.value = '';
+    }
+  }
+  private _currentPlzValueId: string;
+
   constructor(public sandbox: DistributionGroupSandbox, private _utilService: UtilService) {
     super();
     this.frameworkComponents = { setFilterComponent: SetFilterComponent };
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.ts
index 6526266..eace185 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 import { DistributionGroupSandbox } from '@grid-failure-information-app/app/pages/distribution-group/distribution-group.sandbox';
-import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
+import { Component, OnInit, ViewChild, ElementRef, Output, EventEmitter } from '@angular/core';
 import { BaseList } from '@grid-failure-information-app/shared/components/base-components/base.list';
 import { DISTRIBUTION_GROUP_MEMBER_COLDEF } from '@grid-failure-information-app/app/pages/distribution-group/distribution-group-members/distribution-group-members-col-def';
 import { SetFilterComponent } from '@grid-failure-information-app/shared/filters/ag-grid/set-filter/set-filter.component';
@@ -27,6 +27,7 @@
 })
 export class DistributionGroupMembersComponent extends BaseList implements OnInit {
   @ViewChild('searchInput', { static: true }) searchInput: ElementRef;
+  @Output() rowSelectionChanged: EventEmitter<any> = new EventEmitter();
   public columnDefinition: any = DISTRIBUTION_GROUP_MEMBER_COLDEF;
   public frameworkComponents: { setFilterComponent: any };
 
@@ -41,9 +42,11 @@
     (this.gridOptions = {
       ...this.gridOptions,
       onRowClicked: event => {
+        const rowChanged: boolean = this.sandbox.selectedMemberRowIndex !== event.rowIndex;
         this.sandbox.selectedMemberRowIndex = event.rowIndex;
         this.sandbox.setSelectedDistributionGroupMember(event.data);
         this.sandbox.transformPostcodes();
+        if  (rowChanged)  this.rowSelectionChanged.emit(event.data.id);
       },
       onModelUpdated: event => {
         if (event.api.getDisplayedRowAtIndex(this.sandbox.selectedMemberRowIndex)) {
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.ts
index 4c048c8..db8e28f 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.ts
@@ -160,6 +160,7 @@
   }
 
   public deleteDistributionGroupMember(groupId: string, memberId: string): void {
+    this.actionsSubject.pipe(ofType(distributionGroupActions.deleteDistributionGroupMemberSuccess), take(1)).subscribe(() => this.selectedMemberRowIndex = 0);
     this.appState$.dispatch(distributionGroupActions.deleteDistributionGroupMember({ groupId: groupId, memberId: memberId }));
   }
 
@@ -294,16 +295,22 @@
       this._utilService.displayNotification('SelectedContactAlreadyAssigned', 'alert');
       this.setSelectedContact(undefined);
     } else {
-      let newGroupMember = {
+      let newGroupMemberData = {
         contactId: this._selectedContact.uuid,
         distributionGroupUuid: this.selectedDistributionGroup.id,
       };
+      const newGroupMember = new DistributionGroupMember(newGroupMemberData);
+      this.actionsSubject.pipe(ofType(distributionGroupActions.createDistributionGroupMemberSuccess), take(1)).subscribe(payload => {
+        this.selectedMemberRowIndex = 0;
+      });
       this.appState$.dispatch(
         distributionGroupActions.createDistributionGroupMember({
           groupId: this.selectedDistributionGroup.id,
-          newMember: new DistributionGroupMember(newGroupMember),
+          newMember: newGroupMember,
         })
       );
+      this.postcodes = [];
+      this._selectedDistributionGroupMember = newGroupMember;
       this.setSelectedContact(undefined);
     }
   }
