diff --git a/force-app/main/default/applications/Membership.app-meta.xml b/force-app/main/default/applications/Membership.app-meta.xml
index dd08eac0..8b54dfc0 100644
--- a/force-app/main/default/applications/Membership.app-meta.xml
+++ b/force-app/main/default/applications/Membership.app-meta.xml
@@ -13,9 +13,14 @@
standard-home
standard-Account
standard-Contact
+ standard-Opportunity
Membership__c
+ Membership_Contact_Role__c
+ standard-Product2
+ standard-Pricebook2
standard-report
standard-Dashboard
+ standard-Feed
Lightning
Membership_UtilityBar
diff --git a/force-app/main/default/flexipages/Memberships.flexipage-meta.xml b/force-app/main/default/flexipages/Memberships.flexipage-meta.xml
new file mode 100644
index 00000000..219482f2
--- /dev/null
+++ b/force-app/main/default/flexipages/Memberships.flexipage-meta.xml
@@ -0,0 +1,20 @@
+
+
+
+ region1
+ Region
+
+
+ region2
+ Region
+
+
+ region3
+ Region
+
+ Memberships
+
+ flexipage:appHomeTemplateHeaderTwoColumns
+
+ AppPage
+
diff --git a/force-app/main/default/flexipages/Product_Record_Page.flexipage-meta.xml b/force-app/main/default/flexipages/Product_Record_Page.flexipage-meta.xml
new file mode 100644
index 00000000..40382b8c
--- /dev/null
+++ b/force-app/main/default/flexipages/Product_Record_Page.flexipage-meta.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+ collapsed
+ false
+
+
+ enableActionsConfiguration
+ false
+
+
+ enableActionsInNative
+ false
+
+
+ hideChatterActions
+ false
+
+
+ numVisibleActions
+ 4
+
+ force:highlightsPanel
+
+ header
+ Region
+
+
+
+ force:detailPanel
+
+ detailTabContent
+ Facet
+
+
+
+
+ active
+ true
+
+
+ body
+ detailTabContent
+
+
+ title
+ Standard.Tab.detail
+
+ flexipage:tab
+
+ tabs
+ Facet
+
+
+
+
+ tabs
+ tabs
+
+ flexipage:tabset
+
+ main
+ Region
+
+
+
+
+ relatedListComponentOverride
+ NONE
+
+
+ rowsToDisplay
+ 10
+
+
+ showActionBar
+ true
+
+ force:relatedListContainer
+
+ sidebar
+ Region
+
+ Product Record Page
+ Product2
+
+ flexipage:recordHomeTemplateDesktop
+
+ RecordPage
+
diff --git a/force-app/main/default/layouts/Account-Account Layout for Memberships.layout-meta.xml b/force-app/main/default/layouts/Account-Account Layout for Memberships.layout-meta.xml
new file mode 100644
index 00000000..b245cef4
--- /dev/null
+++ b/force-app/main/default/layouts/Account-Account Layout for Memberships.layout-meta.xml
@@ -0,0 +1,278 @@
+
+
+ Submit
+
+ false
+ false
+ true
+
+
+
+ Edit
+ OwnerId
+
+
+ Required
+ Name
+
+
+ Edit
+ ParentId
+
+
+ Edit
+ AccountNumber
+
+
+ Edit
+ Site
+
+
+
+
+ Edit
+ Rating
+
+
+ Edit
+ Phone
+
+
+ Edit
+ Fax
+
+
+ Edit
+ Website
+
+
+ Edit
+ TickerSymbol
+
+
+
+
+
+ false
+ false
+ true
+
+
+
+ Edit
+ BillingAddress
+
+
+
+
+ Edit
+ ShippingAddress
+
+
+
+
+
+ false
+ false
+ true
+
+
+
+ Edit
+ Industry
+
+
+ Edit
+ AnnualRevenue
+
+
+ Edit
+ Ownership
+
+
+
+
+ Edit
+ Type
+
+
+ Edit
+ Sic
+
+
+ Edit
+ NumberOfEmployees
+
+
+
+
+
+ false
+ false
+ true
+
+
+
+ Readonly
+ CreatedById
+
+
+
+
+ Readonly
+ LastModifiedById
+
+
+
+
+
+ false
+ false
+ true
+
+
+
+ Edit
+ Description
+
+
+
+
+
+ true
+ false
+ false
+
+
+
+
+
+
+
+
+ FeedItem.TextPost
+
+
+ FeedItem.ContentPost
+
+
+ NewTask
+
+
+ NewContact
+
+
+ NewCase
+
+
+ LogACall
+
+
+ NewNote
+
+
+ NewOpportunity
+
+
+ NewEvent
+
+
+ FeedItem.RypplePost
+
+
+ FeedItem.LinkPost
+
+
+ FeedItem.PollPost
+
+
+ FeedItem.QuestionPost
+
+
+ SendEmail
+
+
+
+
+
+ runtime_sales_social:socialPanel
+
+
+
+
+ MassChangeOwner
+ NAME
+ Start_Date__c
+ End_Date__c
+ Status__c
+ Product__c
+ Type__c
+ Membership__c.Account__c
+
+
+ FULL_NAME
+ CONTACT.TITLE
+ CONTACT.EMAIL
+ CONTACT.PHONE1
+ RelatedContactList
+
+
+ TASK.SUBJECT
+ TASK.WHO_NAME
+ TASK.WHAT_NAME
+ ACTIVITY.TASK
+ TASK.DUE_DATE
+ TASK.STATUS
+ TASK.PRIORITY
+ CORE.USERS.FULL_NAME
+ RelatedActivityList
+
+
+ TASK.SUBJECT
+ TASK.WHO_NAME
+ TASK.WHAT_NAME
+ ACTIVITY.TASK
+ TASK.DUE_DATE
+ CORE.USERS.FULL_NAME
+ TASK.LAST_UPDATE
+ RelatedHistoryList
+
+
+ OPPORTUNITY.NAME
+ OPPORTUNITY.STAGE_NAME
+ OPPORTUNITY.AMOUNT
+ OPPORTUNITY.CLOSE_DATE
+ RelatedOpportunityList
+
+
+ CASES.CASE_NUMBER
+ NAME
+ CASES.SUBJECT
+ CASES.PRIORITY
+ CASES.CREATED_DATE_DATE_ONLY
+ CASES.STATUS
+ OWNER_NAME
+ RelatedCaseList
+
+
+ RelatedNoteList
+
+
+ ACCOUNT.NAME
+ OPPORTUNITY.NAME
+ PARTNER.ROLE
+ RelatedPartnerList
+
+ ParentId
+ false
+ false
+ false
+ false
+ false
+
+ 00hDC000000SIXf
+ 4
+ 0
+ Default
+
+
diff --git a/force-app/main/default/layouts/Contact-Contact Layout for Memberships.layout-meta.xml b/force-app/main/default/layouts/Contact-Contact Layout for Memberships.layout-meta.xml
new file mode 100644
index 00000000..9a46d902
--- /dev/null
+++ b/force-app/main/default/layouts/Contact-Contact Layout for Memberships.layout-meta.xml
@@ -0,0 +1,293 @@
+
+
+ Submit
+
+ false
+ false
+ true
+
+
+
+ Edit
+ OwnerId
+
+
+ Required
+ Name
+
+
+ Edit
+ AccountId
+
+
+ Edit
+ Title
+
+
+ Edit
+ Department
+
+
+ Edit
+ Birthdate
+
+
+ Edit
+ ReportsToId
+
+
+ Edit
+ LeadSource
+
+
+
+
+ Edit
+ Phone
+
+
+ Edit
+ HomePhone
+
+
+ Edit
+ MobilePhone
+
+
+ Edit
+ OtherPhone
+
+
+ Edit
+ Fax
+
+
+ Edit
+ Email
+
+
+ Edit
+ AssistantName
+
+
+ Edit
+ AssistantPhone
+
+
+
+
+
+ false
+ false
+ true
+
+
+
+ Edit
+ MailingAddress
+
+
+
+
+ Edit
+ OtherAddress
+
+
+
+
+
+ false
+ false
+ true
+
+
+
+
+
+
+ false
+ false
+ true
+
+
+
+ Readonly
+ CreatedById
+
+
+
+
+ Readonly
+ LastModifiedById
+
+
+
+
+
+ false
+ false
+ true
+
+
+
+ Edit
+ Description
+
+
+
+
+
+ true
+ true
+ false
+
+
+
+
+
+
+
+ Record
+
+ Contact.New_Membership
+ QuickAction
+ 0
+
+
+ Edit
+ StandardButton
+ 1
+
+
+ Delete
+ StandardButton
+ 2
+
+
+
+
+ FeedItem.TextPost
+
+
+ FeedItem.ContentPost
+
+
+ NewTask
+
+
+ LogACall
+
+
+ NewCase
+
+
+ NewNote
+
+
+ NewEvent
+
+
+ FeedItem.RypplePost
+
+
+ FeedItem.LinkPost
+
+
+ FeedItem.PollPost
+
+
+ FeedItem.QuestionPost
+
+
+ SendEmail
+
+
+
+
+
+ Readonly
+ AccountId
+
+
+
+
+ runtime_sales_social:socialPanel
+
+
+
+
+ MassChangeOwner
+ NAME
+ Role__c
+ Start_Date__c
+ End_Date__c
+ Membership_Contact_Role__c.Contact__c
+
+
+ OPPORTUNITY.NAME
+ OPPORTUNITY.STAGE_NAME
+ OPPORTUNITY.AMOUNT
+ OPPORTUNITY.CLOSE_DATE
+ RelatedOpportunityList
+
+
+ CASES.CASE_NUMBER
+ CASES.SUBJECT
+ CASES.PRIORITY
+ CASES.CREATED_DATE
+ CASES.STATUS
+ OWNER_NAME
+ RelatedCaseList
+
+
+ TASK.SUBJECT
+ TASK.WHAT_NAME
+ ACTIVITY.TASK
+ TASK.DUE_DATE
+ TASK.STATUS
+ TASK.PRIORITY
+ CORE.USERS.FULL_NAME
+ RelatedActivityList
+
+
+ TASK.SUBJECT
+ TASK.WHAT_NAME
+ ACTIVITY.TASK
+ TASK.DUE_DATE
+ CORE.USERS.FULL_NAME
+ TASK.LAST_UPDATE
+ RelatedHistoryList
+
+
+ CAMPAIGN.NAME
+ CAMPAIGN.START_DATE
+ CAMPAIGN.CAMPAIGN_TYPE
+ CM.STATUS
+ CM.RESPONDED
+ CM.LAST_UPDATE
+ RelatedCampaignList
+
+
+ RelatedNoteList
+
+
+ ACTIVITY.SUBJECT
+ EMAIL_STATUS.CREATED_DATE
+ EMAIL_STATUS.FIRST_OPEN_DATE
+ EMAIL_STATUS.TIMES_OPENED
+ EMAIL_STATUS.LAST_OPEN_DATE
+ RelatedEmailStatusList
+
+ AccountId
+ false
+ false
+ false
+ false
+ false
+
+ 00hDC000000SHju
+ 4
+ 0
+ Default
+
+
diff --git a/force-app/main/default/layouts/Membership__c-Membership Layout.layout-meta.xml b/force-app/main/default/layouts/Membership__c-Membership Layout.layout-meta.xml
index c81c0fe3..8efdbc73 100644
--- a/force-app/main/default/layouts/Membership__c-Membership Layout.layout-meta.xml
+++ b/force-app/main/default/layouts/Membership__c-Membership Layout.layout-meta.xml
@@ -30,6 +30,10 @@
Edit
Status__c
+
+ Readonly
+ Active_Contacts__c
+
diff --git a/force-app/main/default/layouts/Product2-Product Layout for Memberships.layout-meta.xml b/force-app/main/default/layouts/Product2-Product Layout for Memberships.layout-meta.xml
new file mode 100644
index 00000000..84c3caf4
--- /dev/null
+++ b/force-app/main/default/layouts/Product2-Product Layout for Memberships.layout-meta.xml
@@ -0,0 +1,212 @@
+
+
+ Submit
+
+ false
+ false
+ true
+
+
+
+ Required
+ Name
+
+
+ Edit
+ Family
+
+
+ Edit
+ ProductCode
+
+
+ Edit
+ Upgrade_Path__c
+
+
+ Edit
+ Downgrade_Path__c
+
+
+
+
+ Edit
+ IsActive
+
+
+ Edit
+ Term__c
+
+
+ Edit
+ Term_Unit__c
+
+
+ Edit
+ Renewal_Option__c
+
+
+ Edit
+ Grace_Period__c
+
+
+
+
+
+ true
+ false
+ false
+
+
+
+ Readonly
+ CreatedById
+
+
+
+
+ Readonly
+ LastModifiedById
+
+
+
+
+
+ false
+ false
+ false
+
+
+
+ Edit
+ Description
+
+
+
+
+
+ true
+ false
+ false
+
+
+
+
+
+
+
+ Record
+
+ NewOpportunity
+ QuickAction
+ 0
+
+
+ Edit
+ StandardButton
+ 1
+
+
+ Delete
+ StandardButton
+ 2
+
+
+ Clone
+ StandardButton
+ 3
+
+
+ FeedItem.TextPost
+ QuickAction
+ 4
+
+
+ FeedItem.ContentPost
+ QuickAction
+ 5
+
+
+ NewEvent
+ QuickAction
+ 6
+
+
+ NewTask
+ QuickAction
+ 7
+
+
+ LogACall
+ QuickAction
+ 8
+
+
+ FeedItem.RypplePost
+ QuickAction
+ 9
+
+
+ FeedItem.LinkPost
+ QuickAction
+ 10
+
+
+ FeedItem.PollPost
+ QuickAction
+ 11
+
+
+ FeedItem.QuestionPost
+ QuickAction
+ 12
+
+
+ Share
+ StandardButton
+ 13
+
+
+ SendSurveyInvitation
+ StandardButton
+ 14
+
+
+ ChangeRecordType
+ StandardButton
+ 15
+
+
+ PreviewProductAction
+ StandardButton
+ 16
+
+
+ PrintableView
+ StandardButton
+ 17
+
+
+ ProductDeepClone
+ StandardButton
+ 18
+
+
+
+ RelatedStandardPriceList
+
+
+ RelatedPricebookEntryList
+
+ false
+ false
+ false
+ false
+ false
+
+ 00h8G000003o4Au
+ 4
+ 2
+ Default
+
+
diff --git a/force-app/main/default/objects/Membership_Contact_Role__c/listViews/All.listView-meta.xml b/force-app/main/default/objects/Membership_Contact_Role__c/listViews/All.listView-meta.xml
new file mode 100644
index 00000000..d5058512
--- /dev/null
+++ b/force-app/main/default/objects/Membership_Contact_Role__c/listViews/All.listView-meta.xml
@@ -0,0 +1,6 @@
+
+
+ All
+ Everything
+
+
diff --git a/force-app/main/default/objects/Membership__c/fields/Active_Contacts__c.field-meta.xml b/force-app/main/default/objects/Membership__c/fields/Active_Contacts__c.field-meta.xml
new file mode 100644
index 00000000..7f1a6e43
--- /dev/null
+++ b/force-app/main/default/objects/Membership__c/fields/Active_Contacts__c.field-meta.xml
@@ -0,0 +1,17 @@
+
+
+ Active_Contacts__c
+ GitHub #27
+ false
+
+
+ Membership_Contact_Role__c.Status__c
+ equals
+ Renewal, Current
+
+ Membership_Contact_Role__c.Membership__c
+ count
+ false
+ false
+ Summary
+
diff --git a/force-app/main/default/objects/Pricebook2/listViews/All_Active_Price_Books.listView-meta.xml b/force-app/main/default/objects/Pricebook2/listViews/All_Active_Price_Books.listView-meta.xml
new file mode 100644
index 00000000..2378c4a4
--- /dev/null
+++ b/force-app/main/default/objects/Pricebook2/listViews/All_Active_Price_Books.listView-meta.xml
@@ -0,0 +1,15 @@
+
+
+ All_Active_Price_Books
+ PRICEBOOK2.NAME
+ PRICEBOOK2.IS_ACTIVE
+ PRICEBOOK2.DESCRIPTION
+ PRICEBOOK2.LAST_UPDATE
+ Everything
+
+ PRICEBOOK2.IS_ACTIVE
+ equals
+ 1
+
+
+
diff --git a/force-app/main/default/objects/Product2/Product2.object-meta.xml b/force-app/main/default/objects/Product2/Product2.object-meta.xml
new file mode 100644
index 00000000..ea073ce4
--- /dev/null
+++ b/force-app/main/default/objects/Product2/Product2.object-meta.xml
@@ -0,0 +1,150 @@
+
+
+
+ Add
+ Default
+
+
+ Add
+ Large
+ Default
+
+
+ Add
+ Small
+ Default
+
+
+ CancelEdit
+ Default
+
+
+ CancelEdit
+ Large
+ Default
+
+
+ CancelEdit
+ Small
+ Default
+
+
+ Clone
+ Default
+
+
+ Clone
+ Large
+ Default
+
+
+ Clone
+ Small
+ Default
+
+
+ Delete
+ Default
+
+
+ Delete
+ Large
+ Default
+
+
+ Delete
+ Small
+ Default
+
+
+ Edit
+ Default
+
+
+ Edit
+ Large
+ Default
+
+
+ Edit
+ Small
+ Default
+
+
+ List
+ Default
+
+
+ List
+ Large
+ Default
+
+
+ List
+ Small
+ Default
+
+
+ SaveEdit
+ Default
+
+
+ SaveEdit
+ Large
+ Default
+
+
+ SaveEdit
+ Small
+ Default
+
+
+ Tab
+ Default
+
+
+ Tab
+ Large
+ Default
+
+
+ Tab
+ Small
+ Default
+
+
+ View
+ Default
+
+
+ View
+ Large
+ Default
+
+
+ View
+ Small
+ Default
+
+ Compact_Product_Layout_for_Memberships
+ false
+ ReadWrite
+
+ PRODUCT2.NAME
+ PRODUCT2.CUSTOMER_PRODUCT_ID
+ PRODUCT2.DESCRIPTION
+ PRODUCT2.NAME
+ PRODUCT2.CUSTOMER_PRODUCT_ID
+ PRODUCT2.DESCRIPTION
+ PRODUCT2.FAMILY
+ PRODUCT2.NAME
+ PRODUCT2.CUSTOMER_PRODUCT_ID
+ PRODUCT2.DESCRIPTION
+ PRODUCT2.FAMILY
+ PRODUCT2.NAME
+ PRODUCT2.CUSTOMER_PRODUCT_ID
+ PRODUCT2.DESCRIPTION
+ PRODUCT2.FAMILY
+
+ ReadWrite
+
diff --git a/force-app/main/default/objects/Product2/compactLayouts/Compact_Product_Layout_for_Memberships.compactLayout-meta.xml b/force-app/main/default/objects/Product2/compactLayouts/Compact_Product_Layout_for_Memberships.compactLayout-meta.xml
new file mode 100644
index 00000000..dd9b8ca1
--- /dev/null
+++ b/force-app/main/default/objects/Product2/compactLayouts/Compact_Product_Layout_for_Memberships.compactLayout-meta.xml
@@ -0,0 +1,10 @@
+
+
+ Compact_Product_Layout_for_Memberships
+ Name
+ ProductCode
+ Family
+ Term__c
+ Term_Unit__c
+
+
diff --git a/force-app/main/default/objects/Product2/fields/Description.field-meta.xml b/force-app/main/default/objects/Product2/fields/Description.field-meta.xml
new file mode 100644
index 00000000..253d5393
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/Description.field-meta.xml
@@ -0,0 +1,5 @@
+
+
+ Description
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/DisplayUrl.field-meta.xml b/force-app/main/default/objects/Product2/fields/DisplayUrl.field-meta.xml
new file mode 100644
index 00000000..c4ed9c08
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/DisplayUrl.field-meta.xml
@@ -0,0 +1,5 @@
+
+
+ DisplayUrl
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/Downgrade_Path__c.field-meta.xml b/force-app/main/default/objects/Product2/fields/Downgrade_Path__c.field-meta.xml
new file mode 100644
index 00000000..82d38b6f
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/Downgrade_Path__c.field-meta.xml
@@ -0,0 +1,13 @@
+
+
+ Downgrade_Path__c
+ SetNull
+ false
+
+ Product2
+ Products (Downgrade Path)
+ Downgrades
+ false
+ false
+ Lookup
+
diff --git a/force-app/main/default/objects/Product2/fields/ExternalDataSourceId.field-meta.xml b/force-app/main/default/objects/Product2/fields/ExternalDataSourceId.field-meta.xml
new file mode 100644
index 00000000..bc0b138f
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/ExternalDataSourceId.field-meta.xml
@@ -0,0 +1,6 @@
+
+
+ ExternalDataSourceId
+ false
+ Lookup
+
diff --git a/force-app/main/default/objects/Product2/fields/ExternalId.field-meta.xml b/force-app/main/default/objects/Product2/fields/ExternalId.field-meta.xml
new file mode 100644
index 00000000..1500e175
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/ExternalId.field-meta.xml
@@ -0,0 +1,5 @@
+
+
+ ExternalId
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/Family.field-meta.xml b/force-app/main/default/objects/Product2/fields/Family.field-meta.xml
new file mode 100644
index 00000000..7363b1a1
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/Family.field-meta.xml
@@ -0,0 +1,6 @@
+
+
+ Family
+ false
+ Picklist
+
diff --git a/force-app/main/default/objects/Product2/fields/Grace_Period__c.field-meta.xml b/force-app/main/default/objects/Product2/fields/Grace_Period__c.field-meta.xml
new file mode 100644
index 00000000..5c7fb5c3
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/Grace_Period__c.field-meta.xml
@@ -0,0 +1,13 @@
+
+
+ Grace_Period__c
+ The number of days after an expiration that a membership status will be updated to "Lapsed" before changing to "Expired".
+ false
+
+ 18
+ false
+ 0
+ false
+ Number
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/IsActive.field-meta.xml b/force-app/main/default/objects/Product2/fields/IsActive.field-meta.xml
new file mode 100644
index 00000000..a2dd597b
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/IsActive.field-meta.xml
@@ -0,0 +1,5 @@
+
+
+ IsActive
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/IsSerialized.field-meta.xml b/force-app/main/default/objects/Product2/fields/IsSerialized.field-meta.xml
new file mode 100644
index 00000000..4fe6f4c5
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/IsSerialized.field-meta.xml
@@ -0,0 +1,5 @@
+
+
+ IsSerialized
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/Name.field-meta.xml b/force-app/main/default/objects/Product2/fields/Name.field-meta.xml
new file mode 100644
index 00000000..794a78c6
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/Name.field-meta.xml
@@ -0,0 +1,5 @@
+
+
+ Name
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/ProductCode.field-meta.xml b/force-app/main/default/objects/Product2/fields/ProductCode.field-meta.xml
new file mode 100644
index 00000000..26450c6a
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/ProductCode.field-meta.xml
@@ -0,0 +1,5 @@
+
+
+ ProductCode
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/QuantityUnitOfMeasure.field-meta.xml b/force-app/main/default/objects/Product2/fields/QuantityUnitOfMeasure.field-meta.xml
new file mode 100644
index 00000000..9d092875
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/QuantityUnitOfMeasure.field-meta.xml
@@ -0,0 +1,6 @@
+
+
+ QuantityUnitOfMeasure
+ false
+ Picklist
+
diff --git a/force-app/main/default/objects/Product2/fields/Renewal_Option__c.field-meta.xml b/force-app/main/default/objects/Product2/fields/Renewal_Option__c.field-meta.xml
new file mode 100644
index 00000000..b0ce24d8
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/Renewal_Option__c.field-meta.xml
@@ -0,0 +1,35 @@
+
+
+ Renewal_Option__c
+ false
+
+ false
+ false
+ Picklist
+
+ true
+
+ false
+
+ One-Time
+ true
+
+
+
+ Fixed-Term
+ false
+
+
+
+ Renewable
+ false
+
+
+
+ Lifetime
+ false
+
+
+
+
+
diff --git a/force-app/main/default/objects/Product2/fields/SellerId.field-meta.xml b/force-app/main/default/objects/Product2/fields/SellerId.field-meta.xml
new file mode 100644
index 00000000..7cf0867a
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/SellerId.field-meta.xml
@@ -0,0 +1,6 @@
+
+
+ SellerId
+ false
+ Lookup
+
diff --git a/force-app/main/default/objects/Product2/fields/SourceProductId.field-meta.xml b/force-app/main/default/objects/Product2/fields/SourceProductId.field-meta.xml
new file mode 100644
index 00000000..8d58314d
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/SourceProductId.field-meta.xml
@@ -0,0 +1,6 @@
+
+
+ SourceProductId
+ false
+ Lookup
+
diff --git a/force-app/main/default/objects/Product2/fields/StockKeepingUnit.field-meta.xml b/force-app/main/default/objects/Product2/fields/StockKeepingUnit.field-meta.xml
new file mode 100644
index 00000000..64f55020
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/StockKeepingUnit.field-meta.xml
@@ -0,0 +1,5 @@
+
+
+ StockKeepingUnit
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/Term_Unit__c.field-meta.xml b/force-app/main/default/objects/Product2/fields/Term_Unit__c.field-meta.xml
new file mode 100644
index 00000000..e062c3e5
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/Term_Unit__c.field-meta.xml
@@ -0,0 +1,35 @@
+
+
+ Term_Unit__c
+ false
+
+ false
+ false
+ Picklist
+
+ true
+
+ false
+
+ Day
+ false
+
+
+
+ Week
+ false
+
+
+
+ Month
+ false
+
+
+
+ Year
+ false
+
+
+
+
+
diff --git a/force-app/main/default/objects/Product2/fields/Term__c.field-meta.xml b/force-app/main/default/objects/Product2/fields/Term__c.field-meta.xml
new file mode 100644
index 00000000..cbacc6aa
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/Term__c.field-meta.xml
@@ -0,0 +1,12 @@
+
+
+ Term__c
+ false
+
+ 18
+ false
+ 0
+ false
+ Number
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/TransferRecordMode.field-meta.xml b/force-app/main/default/objects/Product2/fields/TransferRecordMode.field-meta.xml
new file mode 100644
index 00000000..71ec270f
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/TransferRecordMode.field-meta.xml
@@ -0,0 +1,5 @@
+
+
+ TransferRecordMode
+ false
+
diff --git a/force-app/main/default/objects/Product2/fields/Upgrade_Path__c.field-meta.xml b/force-app/main/default/objects/Product2/fields/Upgrade_Path__c.field-meta.xml
new file mode 100644
index 00000000..a0c77862
--- /dev/null
+++ b/force-app/main/default/objects/Product2/fields/Upgrade_Path__c.field-meta.xml
@@ -0,0 +1,13 @@
+
+
+ Upgrade_Path__c
+ SetNull
+ false
+
+ Product2
+ Upgrade_from
+ Upgrades_to
+ false
+ false
+ Lookup
+
diff --git a/force-app/main/default/permissionsets/Manage_Memberships.permissionset-meta.xml b/force-app/main/default/permissionsets/Manage_Memberships.permissionset-meta.xml
index eefe14db..fa79a83b 100644
--- a/force-app/main/default/permissionsets/Manage_Memberships.permissionset-meta.xml
+++ b/force-app/main/default/permissionsets/Manage_Memberships.permissionset-meta.xml
@@ -170,6 +170,11 @@
Product2.DisplayUrl
true
+
+ true
+ Product2.Downgrade_Path__c
+ true
+
true
Product2.ExternalDataSourceId
@@ -185,6 +190,11 @@
Product2.Family
true
+
+ true
+ Product2.Grace_Period__c
+ true
+
true
Product2.ProductCode
@@ -195,16 +205,46 @@
Product2.QuantityUnitOfMeasure
true
+
+ true
+ Product2.Renewal_Option__c
+ true
+
+
+ false
+ Product2.SellerId
+ false
+
+
+ false
+ Product2.SourceProductId
+ false
+
true
Product2.StockKeepingUnit
true
+
+ true
+ Product2.Term_Unit__c
+ true
+
+
+ true
+ Product2.Term__c
+ true
+
true
Product2.TransferRecordMode
true
+
+ true
+ Product2.Upgrade_Path__c
+ true
+
false
diff --git a/force-app/main/default/permissionsets/View_Memberships.permissionset-meta.xml b/force-app/main/default/permissionsets/View_Memberships.permissionset-meta.xml
new file mode 100644
index 00000000..39596574
--- /dev/null
+++ b/force-app/main/default/permissionsets/View_Memberships.permissionset-meta.xml
@@ -0,0 +1,308 @@
+
+
+
+ true
+ Membership_Contact_Role__c.End_Date__c
+ true
+
+
+ true
+ Membership_Contact_Role__c.Is_Primary__c
+ true
+
+
+ true
+ Membership_Contact_Role__c.Role__c
+ true
+
+
+ true
+ Membership_Contact_Role__c.Start_Date__c
+ true
+
+
+ true
+ Membership__c.Account__c
+ true
+
+
+ true
+ Membership__c.End_Date__c
+ true
+
+
+ true
+ Membership__c.Opportunity__c
+ true
+
+
+ true
+ Membership__c.Origin__c
+ true
+
+
+ true
+ Membership__c.Primary_Contact__c
+ true
+
+
+ true
+ Membership__c.Product__c
+ true
+
+
+ true
+ Membership__c.Start_Date__c
+ true
+
+
+ true
+ Membership__c.Type__c
+ true
+
+
+ true
+ Opportunity.AccountId
+ true
+
+
+ true
+ Opportunity.Amount
+ true
+
+
+ true
+ Opportunity.CampaignId
+ true
+
+
+ true
+ Opportunity.ContractId
+ true
+
+
+ true
+ Opportunity.Description
+ true
+
+
+ false
+ Opportunity.ExpectedRevenue
+ true
+
+
+ true
+ Opportunity.IsPrivate
+ true
+
+
+ true
+ Opportunity.LeadSource
+ true
+
+
+ true
+ Opportunity.NextStep
+ true
+
+
+ true
+ Opportunity.Probability
+ true
+
+
+ true
+ Opportunity.TotalOpportunityQuantity
+ true
+
+
+ true
+ Opportunity.Type
+ true
+
+
+ true
+ OpportunityLineItem.Description
+ true
+
+
+ true
+ OpportunityLineItem.Discount
+ true
+
+
+ false
+ OpportunityLineItem.ListPrice
+ true
+
+
+ true
+ OpportunityLineItem.Membership__c
+ true
+
+
+ false
+ OpportunityLineItem.ProductCode
+ true
+
+
+ true
+ OpportunityLineItem.ServiceDate
+ true
+
+
+ false
+ OpportunityLineItem.Subtotal
+ true
+
+
+ false
+ OpportunityLineItem.TotalPrice
+ true
+
+
+ true
+ Product2.Description
+ true
+
+
+ true
+ Product2.DisplayUrl
+ true
+
+
+ false
+ Product2.Downgrade_Path__c
+ true
+
+
+ true
+ Product2.ExternalDataSourceId
+ true
+
+
+ true
+ Product2.ExternalId
+ true
+
+
+ true
+ Product2.Family
+ true
+
+
+ false
+ Product2.Grace_Period__c
+ true
+
+
+ true
+ Product2.ProductCode
+ true
+
+
+ true
+ Product2.QuantityUnitOfMeasure
+ true
+
+
+ false
+ Product2.Renewal_Option__c
+ true
+
+
+ false
+ Product2.SellerId
+ false
+
+
+ false
+ Product2.SourceProductId
+ false
+
+
+ true
+ Product2.StockKeepingUnit
+ true
+
+
+ false
+ Product2.Term_Unit__c
+ true
+
+
+ false
+ Product2.Term__c
+ true
+
+
+ true
+ Product2.TransferRecordMode
+ true
+
+
+ false
+ Product2.Upgrade_Path__c
+ true
+
+ false
+
+
+ false
+ false
+ false
+ true
+ false
+
+ false
+
+
+ false
+ false
+ false
+ true
+ false
+
+ false
+
+
+ false
+ false
+ false
+ true
+ false
+
+ false
+
+
+ false
+ false
+ false
+ true
+ false
+
+ false
+
+
+ false
+ false
+ false
+ true
+ false
+
+ false
+
+
+ false
+ false
+ false
+ true
+ false
+
+ false
+
+
+ Membership__c
+ Visible
+
+
diff --git a/force-app/main/default/quickActions/Contact.New_Membership.quickAction-meta.xml b/force-app/main/default/quickActions/Contact.New_Membership.quickAction-meta.xml
index d7b665be..2e6b92fa 100644
--- a/force-app/main/default/quickActions/Contact.New_Membership.quickAction-meta.xml
+++ b/force-app/main/default/quickActions/Contact.New_Membership.quickAction-meta.xml
@@ -16,6 +16,18 @@
true
TwoColumnsLeftToRight
+
+
+ false
+ Account__c
+ Edit
+
+
+ false
+ Type__c
+ Edit
+
+
false
@@ -33,7 +45,6 @@
Edit
-
Membership__c
Primary_Contact__c
diff --git a/force-app/main/default/tabs/Membership_Contact_Role__c.tab-meta.xml b/force-app/main/default/tabs/Membership_Contact_Role__c.tab-meta.xml
new file mode 100644
index 00000000..be153d2c
--- /dev/null
+++ b/force-app/main/default/tabs/Membership_Contact_Role__c.tab-meta.xml
@@ -0,0 +1,6 @@
+
+
+ true
+ Tab for managing Membership Contact Roles
+ Custom1: Heart
+