Skip to content

Commit 4bbb3f0

Browse files
authored
Merge pull request #1941 from MicrosoftDocs/master
Pushing to live
2 parents ea3ab59 + 491dce8 commit 4bbb3f0

File tree

9 files changed

+98
-2
lines changed

9 files changed

+98
-2
lines changed

powerapps-docs/developer/common-data-service/best-practices/business-logic/develop-iplugin-implementations-stateless.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ms.devlang: na
1313
ms.topic: article
1414
ms.tgt_pltfrm: na
1515
ms.workload: na
16-
ms.date: 1/15/2019
16+
ms.date: 9/05/2019
1717
ms.author: jowells
1818
search.audienceType:
1919
- developer
@@ -40,7 +40,11 @@ Members of classes that implement the <xref href="Microsoft.Xrm.Sdk.IPlugin?text
4040

4141
## Guidance
4242

43-
When implementing <xref:Microsoft.Xrm.Sdk.IPlugin>, do not use member fields and properties and write the <xref:Microsoft.Xrm.Sdk.IPlugin.Execute*> method as a stateless operation. All per invocation state information should be accessed via the execution context only. Do not attempt to store any execution state data in member fields or properties for use during the current or next plug-in invocation unless that data was obtained from the configuration parameter provided to the overloaded constructor.
43+
When implementing <xref:Microsoft.Xrm.Sdk.IPlugin>, do not use member fields and properties and write the <xref:Microsoft.Xrm.Sdk.IPlugin.Execute*> method as a stateless operation. All per invocation state information should be accessed via the execution context only.
44+
45+
Do not attempt to store any execution state data in member fields or properties for use during the current or next plug-in invocation unless that data was obtained from the configuration parameter provided to the overloaded constructor.
46+
47+
Do not use code that registers to AppDomain events. Plugin logic should not rely on any AppDomain events or properties, since the internal implementation of the plugin infrastructure can change the execution behavior at any point of time. This can cause failures even if the code worked at some point in time.
4448

4549
Read-only, static, and constant members are inherently thread-safe and can also be used reliably within a plug-in class. The following are some examples on how to maintain thread-safe plug-ins:
4650

powerapps-docs/maker/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,8 @@
911911
href: ./model-driven-apps/configure-event-handlers-legacy.md
912912
- name: How to disable auto-save in a form
913913
href: ./model-driven-apps/manage-auto-save.md
914+
- name: How to add a tab for SharePoint documents
915+
href: ./model-driven-apps/add-documents-tab-entity-main-form.md
914916
- name: Embed a canvas app on a model-driven form
915917
href: ./model-driven-apps/embed-canvas-app-in-form.md
916918
items:
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
---
2+
title: "Add the Documents tab to the main form for an entity | MicrosoftDocs"
3+
description: "Learn how to add the Documents tab to the main form for an entity"
4+
s.custom:
5+
ms.date: 09/05/2019
6+
ms.reviewer:
7+
ms.service: crm-online
8+
ms.suite:
9+
ms.tgt_pltfrm:
10+
ms.topic: article
11+
applies_to:
12+
- Dynamics 365 for Customer Engagement (online)
13+
- Dynamics 365 for Customer Engagement Version 9.x
14+
author: Mattp123
15+
ms.assetid:
16+
caps.latest.revision:
17+
ms.author: matp
18+
manager: kvivek
19+
search.audienceType:
20+
- customizer
21+
search.app:
22+
- D365CE
23+
---
24+
# Add the SharePoint documents tab to the main form for an entity
25+
[!INCLUDE [cc-beta-prerelease-disclaimer](../../includes/cc-beta-prerelease-disclaimer.md)]
26+
27+
Adding a tab on an entity main form to display SharePoint documents helps users discover and use the SharePoint integration features that are available in a model-driven app.
28+
29+
![Document files tab](media/document-files-tab.png)
30+
31+
> [!IMPORTANT]
32+
> To use this feature you must enable document management. More information: [Manage your documents using SharePoint](/dynamics365/customer-engagement/admin/manage-documents-using-sharepoint)
33+
34+
## Add the documents tab in the FormXML
35+
1. Create a new solution. Sign-in to PowerApps and go to **Solutions**, select **New solution** and then enter the required and optional information. More information: [Create a solution](../common-data-service/create-solution.md)
36+
2. Add the entity to the solution where you want to add the documents tab on the main form. All standard and custom entities are supported. More information: [Add an existing component to a solution](/powerapps/maker/common-data-service/use-solution-explorer#add-an-existing-component-to-a-solution)
37+
3. Include the form for the entity in the solution, such as the main form for the account entity. Next to the entity, select **...**, and then select **Edit**. Select the **Forms** tab. If the form you want is missing, add it.
38+
39+
4. Add a one-column tab to the main form. To do this, in the form designer select an area on the form canvas, select **Add Component**, and then select **1 Column Tab**.
40+
![Insert one column tab](media/insert-one-column-tab.png)
41+
42+
5. In the form designer select the **New Tab** on the form designer canvas, select **Add Field**, and add a field such as *Address 1: City* from the left pane. You can use any text or numeric field for the tab.
43+
![Add a field to the tab](media/add-field-to-tab.png)
44+
6. Rename the tab label. To do this, select **New Tab**, and in the right properties pane replace **New Tab** with something more descriptive, such as *Files*.
45+
7. Select **Save**, select **Publish**, and then close the form designer.
46+
8. From the PowerApps maker home page, select **Solutions**, select the solution, and the select **Export** to export the solution as an unmanaged solution. More information: [Export solutions](../common-data-service/import-update-export-solutions.md#export-solutions)
47+
9. Extract the solution and open the customization.xml file with an XML or text editor.
48+
10. In the customization.xml search for **label description="Files"** (or whatever you named the tab label in the previous step).
49+
11. Scroll down to the control id="*field name*" element, such as **control id="address1_city"** and replace the entire element with the [XML sample](#xml-sample-for-adding-the-documents-tab-to-a-form) in this topic.
50+
51+
> [!div class="mx-imgBorder"]
52+
> ![](media/form-xml.png "XML sample insertion point")
53+
54+
12. Make these modifications to the XML sample.
55+
56+
a. Locate the **RelationshipName** element and replace it with the schema name that appears as *entityLogicalName*_SharePointDocument. For example, for the accounts entity the schema name for the relationship is Account_SharePointDocument, which is the schema name for the XML sample in this topic. To find the name for a different entity, go to **Settings** > **Customizations** > **Customize the System** > **Entities** > select the entity > select **1:N Relationships**. Locate the **Related Entity** of type **SharePointDocument**.
57+
58+
![Account relationship SharePoint document](media/account-sharepointdocument.png)
59+
60+
b. Create a globally unique identifier (guid) and replace the existing **uniqueid** guid located in the **control** element you pasted in the previous step while preserving the curly braces {}.
61+
![Control element unique id](media/control-unique-id.png)
62+
c. Save your changes to customizations.xml.
63+
13. Open the solution.xml file and increment the **Version** element value. For example, from *1.1.0.0* to *1.2.0.0*.
64+
14. Package all solution files into a compressed (zipped) folder and import in to your environment. If you receive an error that you must delete the previous solution, do so. More information: [Import, update, and upgrade a solution](../common-data-service/import-update-export-solutions.md)
65+
66+
## XML sample for adding the documents tab to a form
67+
```xml
68+
<control id="DocumentSubGrid" classid="{E7A81278-8635-4d9e-8D4D-59480B391C5B}" indicationOfSubgrid="true" uniqueid="{9cd66b5c-8b7a-6433-c5a5-46a7245dd534}">
69+
<parameters>
70+
<ViewId>{0016F9F3-41CC-4276-9D11-04308D15858D}</ViewId>
71+
<IsUserView>false</IsUserView>
72+
<RelationshipName>Account_SharepointDocument</RelationshipName>
73+
<TargetEntityType>sharepointdocument</TargetEntityType>
74+
<AutoExpand>Fixed</AutoExpand>
75+
<EnableQuickFind>false</EnableQuickFind>
76+
<EnableViewPicker>true</EnableViewPicker>
77+
<ViewIds />
78+
<EnableJumpBar>false</EnableJumpBar>
79+
<ChartGridMode>Grid</ChartGridMode>
80+
<VisualizationId />
81+
<IsUserChart>false</IsUserChart>
82+
<EnableChartPicker>false</EnableChartPicker>
83+
<RecordsPerPage>10</RecordsPerPage>
84+
<HeaderColorCode>#F3F3F3</HeaderColorCode>
85+
</parameters>
86+
</control>
87+
```
88+
89+
### See also
90+
[Manage your documents using SharePoint](/dynamics365/customer-engagement/admin/manage-documents-using-sharepoint)
Loading
Loading
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)