diff --git a/hypha/apply/activity/messaging.py b/hypha/apply/activity/messaging.py
index 61710ddf009aa52ff9b8a10b917e682ebc35dc88..0593f09feff319e9e50962142d13c34722a7943b 100644
--- a/hypha/apply/activity/messaging.py
+++ b/hypha/apply/activity/messaging.py
@@ -708,6 +708,7 @@ class EmailAdapter(AdapterBase):
         MESSAGES.PARTNERS_UPDATED_PARTNER: 'partners_updated_partner',
         MESSAGES.UPLOAD_CONTRACT: 'messages/email/contract_uploaded.html',
         MESSAGES.CREATED_PROJECT: 'handle_project_created',
+        MESSAGES.UPDATED_VENDOR: 'handle_vendor_updated',
         MESSAGES.SENT_TO_COMPLIANCE: 'messages/email/sent_to_compliance.html',
         MESSAGES.UPDATE_PAYMENT_REQUEST: 'messages/email/payment_request_updated.html',
         MESSAGES.UPDATE_PAYMENT_REQUEST_STATUS: 'handle_payment_status_updated',
@@ -779,6 +780,13 @@ class EmailAdapter(AdapterBase):
                 **kwargs
             )
 
+    def handle_vendor_updated(self, source, **kwargs):
+        return self.render_message(
+            'messages/email/vendor_updated.html',
+            source=source,
+            **kwargs,
+        )
+
     def handle_determination(self, determination, source, **kwargs):
         submission = source
         if determination.send_notice:
diff --git a/hypha/apply/activity/migrations/0056_add_updated_vendor.py b/hypha/apply/activity/migrations/0056_add_updated_vendor.py
new file mode 100644
index 0000000000000000000000000000000000000000..f3c4416972b6f1a90e628f02d44b3b9fb6b5741a
--- /dev/null
+++ b/hypha/apply/activity/migrations/0056_add_updated_vendor.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.24 on 2021-07-06 08:15
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('activity', '0055_add_batch_delete_submission'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='event',
+            name='type',
+            field=models.CharField(choices=[('UPDATE_LEAD', 'Update Lead'), ('BATCH_UPDATE_LEAD', 'Batch Update Lead'), ('EDIT', 'Edit'), ('APPLICANT_EDIT', 'Applicant Edit'), ('NEW_SUBMISSION', 'New Submission'), ('SCREENING', 'Screening'), ('TRANSITION', 'Transition'), ('BATCH_TRANSITION', 'Batch Transition'), ('DETERMINATION_OUTCOME', 'Determination Outcome'), ('BATCH_DETERMINATION_OUTCOME', 'Batch Determination Outcome'), ('INVITED_TO_PROPOSAL', 'Invited To Proposal'), ('REVIEWERS_UPDATED', 'Reviewers Updated'), ('BATCH_REVIEWERS_UPDATED', 'Batch Reviewers Updated'), ('PARTNERS_UPDATED', 'Partners Updated'), ('PARTNERS_UPDATED_PARTNER', 'Partners Updated Partner'), ('READY_FOR_REVIEW', 'Ready For Review'), ('BATCH_READY_FOR_REVIEW', 'Batch Ready For Review'), ('NEW_REVIEW', 'New Review'), ('COMMENT', 'Comment'), ('PROPOSAL_SUBMITTED', 'Proposal Submitted'), ('OPENED_SEALED', 'Opened Sealed Submission'), ('REVIEW_OPINION', 'Review Opinion'), ('DELETE_SUBMISSION', 'Delete Submission'), ('DELETE_REVIEW', 'Delete Review'), ('CREATED_PROJECT', 'Created Project'), ('UPDATED_VENDOR', 'Updated Vendor'), ('UPDATE_PROJECT_LEAD', 'Update Project Lead'), ('EDIT_REVIEW', 'Edit Review'), ('SEND_FOR_APPROVAL', 'Send for Approval'), ('APPROVE_PROJECT', 'Project was Approved'), ('PROJECT_TRANSITION', 'Project was Transitioned'), ('REQUEST_PROJECT_CHANGE', 'Project change requested'), ('UPLOAD_DOCUMENT', 'Document was Uploaded to Project'), ('REMOVE_DOCUMENT', 'Document was Removed from Project'), ('UPLOAD_CONTRACT', 'Contract was Uploaded to Project'), ('APPROVE_CONTRACT', 'Contract was Approved'), ('REQUEST_PAYMENT', 'Payment was requested for Project'), ('UPDATE_PAYMENT_REQUEST_STATUS', 'Updated Payment Request Status'), ('DELETE_PAYMENT_REQUEST', 'Delete Payment Request'), ('SENT_TO_COMPLIANCE', 'Project was sent to Compliance'), ('UPDATE_PAYMENT_REQUEST', 'Updated Payment Request'), ('SUBMIT_REPORT', 'Submit Report'), ('SKIPPED_REPORT', 'Skipped Report'), ('REPORT_FREQUENCY_CHANGED', 'Report Frequency Changed'), ('REPORT_NOTIFY', 'Report Notify'), ('CREATE_REMINDER', 'Reminder Created'), ('DELETE_REMINDER', 'Reminder Deleted'), ('REVIEW_REMINDER', 'Reminde to Review'), ('BATCH_DELETE_SUBMISSION', 'Delete Batch Submissions')], max_length=50),
+        ),
+    ]
diff --git a/hypha/apply/activity/options.py b/hypha/apply/activity/options.py
index fb5d7fb04ebc3acd53bde249a1c03ff90fdc2150..75cf974f80b3715fb899ec07df90c4dda7f00b7f 100644
--- a/hypha/apply/activity/options.py
+++ b/hypha/apply/activity/options.py
@@ -27,6 +27,7 @@ class MESSAGES(Enum):
     DELETE_SUBMISSION = 'Delete Submission'
     DELETE_REVIEW = 'Delete Review'
     CREATED_PROJECT = 'Created Project'
+    UPDATED_VENDOR = 'Updated Vendor'
     UPDATE_PROJECT_LEAD = 'Update Project Lead'
     EDIT_REVIEW = 'Edit Review'
     SEND_FOR_APPROVAL = 'Send for Approval'
diff --git a/hypha/apply/activity/templates/messages/email/vendor_updated.html b/hypha/apply/activity/templates/messages/email/vendor_updated.html
new file mode 100644
index 0000000000000000000000000000000000000000..ae3d1cdce50c0fe685d2412b25c4410025dc3735
--- /dev/null
+++ b/hypha/apply/activity/templates/messages/email/vendor_updated.html
@@ -0,0 +1,10 @@
+{% extends "messages/email/base.html" %}
+
+{% block content %}
+
+Vendor Information has been updated on {{ source.title }}.
+
+Project: {{ source.title }}
+Link: {{ request.scheme }}://{{ request.get_host }}{{ source.get_absolute_url }}
+
+{% endblock %}
diff --git a/hypha/apply/projects/forms/project.py b/hypha/apply/projects/forms/project.py
index b2ee7233e9fe55c25267e5ffc441dbde09485a78..0a83b6017ca545aad598816204e298863d474fec 100644
--- a/hypha/apply/projects/forms/project.py
+++ b/hypha/apply/projects/forms/project.py
@@ -2,7 +2,6 @@ from django import forms
 from django.contrib.auth import get_user_model
 from django.db.models import Q
 
-from addressfield.fields import AddressField
 from hypha.apply.funds.models import ApplicationSubmission
 from hypha.apply.users.groups import STAFF_GROUP_NAME
 
@@ -77,8 +76,6 @@ class CreateApprovalForm(forms.ModelForm):
 
 
 class ProjectEditForm(forms.ModelForm):
-    contact_address = AddressField()
-
     class Meta:
         fields = [
             'title',
diff --git a/hypha/apply/projects/templates/application_projects/includes/supporting_documents.html b/hypha/apply/projects/templates/application_projects/includes/supporting_documents.html
index 402008b03b8abee659e6e91be16c66ecfdb9d8c0..1617d971485a6e5ebde4de37ff3de1c90ac29de6 100644
--- a/hypha/apply/projects/templates/application_projects/includes/supporting_documents.html
+++ b/hypha/apply/projects/templates/application_projects/includes/supporting_documents.html
@@ -26,8 +26,18 @@
                     <p class="docs-block__title">Contractor Setup Form</p>
                 </div>
                 <div class="docs-block__row-inner">
-                    <a class="docs-block__link" href="{% url 'apply:projects:vendor-detail' pk=project.pk vendor_pk=project.vendor.pk %}">View</a>
-                    <a class="docs-block__link" href="{% url 'apply:projects:vendor' pk=project.pk %}">Update info</a>
+                    {% if editable %}
+                        <a class="docs-block__link" href="{% url 'apply:projects:vendor' pk=project.pk %}">
+                            {% if project.vendor.user_has_updated_details %}
+                            Edit
+                            {% else %}
+                            Create
+                            {% endif %}
+                        </a>
+                    {% endif %}
+                    {% if project.vendor.user_has_updated_details %}
+                        <a class="docs-block__link" href="{% url 'apply:projects:vendor-detail' pk=project.pk vendor_pk=project.vendor.pk %}">View</a>
+                    {% endif %}
                 </div>
             </li>
         {% endif %}
diff --git a/hypha/apply/projects/views/vendor.py b/hypha/apply/projects/views/vendor.py
index d7868aba100e76f419ae70a3a77b85ea1ac0311f..a78d4e2ff834f790cc7f10f1ebc095a6e2f72ffb 100644
--- a/hypha/apply/projects/views/vendor.py
+++ b/hypha/apply/projects/views/vendor.py
@@ -14,6 +14,7 @@ from formtools.wizard.views import SessionWizardView
 from wagtail.core.models import Site
 
 from addressfield.fields import ADDRESS_FIELDS_ORDER
+from hypha.apply.activity.messaging import MESSAGES, messenger
 from hypha.apply.projects.models.vendor import VendorFormSettings
 from hypha.apply.utils.storage import PrivateMediaView, PrivateStorage
 
@@ -51,6 +52,8 @@ class VendorAccessMixin:
         is_owner = request.user == project.user
         if not (is_owner or is_admin):
             raise PermissionDenied
+        if not project.editable_by(request.user):
+            raise PermissionDenied
         if not project.vendor:
             raise Http404
         return super().dispatch(request, *args, **kwargs)
@@ -147,6 +150,14 @@ class CreateVendorView(VendorAccessMixin, SessionWizardView):
                     f.close()
         form = self.get_form('documents')
         form.delete_temporary_files()
+
+        messenger(
+            MESSAGES.UPDATED_VENDOR,
+            request=self.request,
+            user=vendor_project.lead,
+            source=vendor_project
+        )
+
         return render(self.request, 'application_projects/vendor_success.html', {'project': vendor_project})
 
     def get_form_initial(self, step):