developer
1256 TopicsCan PnP Provisioning preserve SharePoint List GUIDs across environments?
I am using PnP Framework 1.15.1 with the 2022/09 Provisioning Schema to provision SharePoint Online lists. After applying the provisioning template, I noticed that all newly created lists have different SPList.Id (GUID) values compared to the source site. My template contains standard pnp:ListInstance definitions, for example: <pnp:ListInstance Title="Event Types" TemplateType="100" Url="Lists/EventTypes" TemplateFeatureID="00bfea71-de22-43b2-a848-c05709900100"> ... </pnp:ListInstance> I checked the 2022/09 schema and I couldn't find any attribute to specify the list GUID. I also noticed that the provisioning engine registers ListIdToken using createdList.Id, which seems to happen after the list has already been created. My questions are: Is it expected that PnP Provisioning always creates new SharePoint List GUIDs? Is there any supported way to preserve the original SPList.Id during provisioning? Was this ever supported in previous versions of the PnP Provisioning schema or framework? Any official documentation or confirmation from the PnP team would be appreciated.13Views0likes0CommentsClarification on SharePoint Macro Consent Flow and Permissions
Hi Team, We have a customer using SharePoint in a secure environment. While configuring the Prolaborate SharePoint Macro on their site, a consent popup is displayed during the approval process. Previously, our macro implementation used the Admin Consent flow. Based on the customer’s security and approval requirements, we have modified the consent to use the User Consent flow instead. The customer has requested additional clarification regarding the consent process. Specifically, they would like to understand: The exact API calls triggered for these two consents View your basic profile Maintain access to data you have given it access to The permissions being requested from Microsoft Graph or SharePoint Whether the application requests any tenant-wide or high-privilege permissions Whether minimal permissions such as Sites.Selected can be used instead of broader scopes Current concern: The customer feels the current permission request is too broad for approval within their secure environment (Banking customer). Reason: Their internal approval process requires clear visibility into the exact API and permission scopes being requested, as different permissions are reviewed and approved by different internal teams (for example, User.Read is managed by the Identity team). From our implementation side, we are using only custom APIs and are not directly calling Microsoft Graph APIs. This information will help us provide a clear response to the customer and support their internal approval process.70Views0likes1CommentViva Learning – SharePoint content provider configured but content not appearing in Teams
Hi everyone, I’m configuring Viva Learning in Microsoft Teams and I’m trying to use SharePoint as a content provider to publish custom learning content (Word, PowerPoint, Excel, PDF, audio, video, and web links). What I’ve done so far: Created a dedicated SharePoint site. Waited about one hour before adding it as a SharePoint provider in Viva Learning. After the configuration, the “Learning App Content Repository” list was automatically created. In the document library, I uploaded: PDF files a web link I copied the folder URLs and added them to the Learning App Content Repository list. I also followed the official procedure to create and assign a Microsoft 365 Group, as described in this documentation: https://learn.microsoft.com/en-us/viva/learning/sharepoint-permissions The issue: Almost 24 hours have passed, but I still don’t see any content in Viva Learning (Teams). In the sync logs, I can see that synchronization jobs are running, but the content is either not appearing or only partially synchronized. At this point, I’m not sure: if I’m missing something in the SharePoint provider configuration, if the folder URLs are incorrect, or if there’s some additional requirement related to permissions or metadata. Has anyone experienced a similar issue or can suggest what I should check next? Thanks in advance!224Views0likes4CommentsSPFx CDN URLs not consistently added to Trusted Script Sources (CSP)
Hi everyone, We’re currently investigating an issue related to SharePoint Online Content Security Policy (CSP) and Trusted Script Sources (TSS) for SPFx solutions. [SharePoint Online] [SPFx] [CSP] Scenario We deployed multiple SPFx .sppkg packages via App Catalog These solutions load scripts from an external CDN (cdnBasePath, with includeClientSideAssets: false) Expected Behavior As per documentation, CDN URLs used by SPFx solutions should be available/registered in Trusted Script Sources so that scripts can load under CSP enforcement Observed Behavior Only some CDN URLs (from certain packages) appear in Trusted Script Sources Others are missing, even though they are similarly configured and deployed Due to this, scripts from those missing sources are blocked by CSP, and the extension fails to load Additional Notes No use of eval() or inline scripts in our code Re-deploying packages sometimes resolves the issue (CDN URLs get registered afterward) Behavior appears inconsistent across environments Question Has anyone encountered a similar issue where: Trusted Script Sources were partially auto-populated from App Catalog deployments? CDN URLs from some SPFx packages were not registered automatically? Any insights on: Root cause Known limitations Best practices to ensure consistent registration would be really helpful. Thanks in advance!140Views1like1CommentRetrieve Term Navigation Properties using REST API
I've set up a Term set in the global term store and enabled Navigation so I can add URLs for each of the Terms. Note that I'm not going to use the Term set navigation in my site - it's only there to try and retrieve it from my SPFx webpart. Note that I can get all the terms under my Term set - just not the navigation properties. Below is what I'm trying to get the navigation properties: https://TENANT.sharepoint.com/_api/v2.1/termStore/sets/TERMSETGUID/terms/TERMGUID/properties But I get: "The property 'properties' is null or does not exist". Also, expand doesn't seem to work at all. I'm not looking to use pnpjs or even graph if I can help it. Any ideas welcome.802Views2likes8CommentsVisualizing SharePoint List Relationships as ER Diagrams
In several SharePoint-based projects, I encountered the same challenge. As solutions grow, list relationships become increasingly difficult to understand. This is especially true in environments with multiple lookup columns, implicit relational structures, and long-lived tenant environments where schemas evolve over time. Although SharePoint provides rich metadata, there is no built-in way to visualize list relationships as an ER diagram. To explore this problem, I built a small browser extension that extracts list and column metadata from a SharePoint site, detects lookup relationships, and generates PlantUML-based ER diagram code. It can also export structured definitions to Excel. The goal is not only diagram generation, but improving architectural visibility, impact analysis during schema changes, documentation quality in long-term projects, and migration planning such as moving SharePoint lists to Dataverse. I am particularly interested in how other developers document SharePoint list structures in larger environments. The extension itself is available here: https://chromewebstore.google.com/detail/sharepoint-erd-generator/nbjfcilmndpofckndmcadgfcacadgeak I would appreciate any feedback or discussion around approaches to SharePoint schema documentation.279Views0likes1CommentSize increase of .sppkg packages with heft/v1.22
After upgrading our solution to SPFx 1.22.rc-0 and switching to the new heft build toolchain our .sppkg packages have suddenly grown massively in size. They are more than double the size of the 1.21 version. Is there a reason for this? Is there anything we can do to reduce the package size back to what it was previously? Our main solution contains both web parts and list extensions, split into several bundles. Let me know what other details would be helpful.160Views1like1CommentShow Access and Confidentiality Message to External Users in a SharePoint Document Library
Is it possible to display the following text inside a SharePoint document library page so that it’s visible to external users when they open the shared link? Text to Display: Access and Use Access is restricted to authorized representatives and internal personnel. Users must not share their login credentials or grant access to any third party. Uploaded and downloaded documents must relate solely to the agreed scope of work Disclaimer Use of this site constitutes acceptance of these terms. Access may be suspended or restricted if security, confidentiality, or compliance risks are identified. Goal: I want this text to be clearly visible to external parties (for example, when they open a document library link to upload or view files).111Views0likes1CommentSharePoint Online SP.FieldUserValue.get_email() always returns NULL.
Since last week, SP.FieldUserValue.get_email() has been returning null for all users in Person or Group fields. This occures when I use getItems method. For example: var listName = "MyList"; var context = SP.ClientContext.get_current(); var web = context.get_web(); var list = web.get_lists().getByTitle(listName); var query= new SP.CamlQuery(); var items = list.getItems(query); context.load(items); context.executeQueryAsync(()=>{ var enumerator = items.getEnumerator(); while (enumerator.moveNext()) { var item = enumerator.get_current(); var fldValues = item.get_fieldValues(); console.log(fldValues["Editor"].get_email()) } }); I haven’t been able to find any information about changes related to this behavior. We’ve been using the Email property of user fields for years without any issues, and it has always worked as expected. It's documented here: https://learn.microsoft.com/ru-ru/dotnet/api/microsoft.sharepoint.client.fielduservalue.email?view=sharepoint-csom Does anyone know what might have changed or why this has stopped working?702Views9likes3CommentsIs Creating Multiple ClientContext Instances Efficient in CSOM for one Site Url?
Is it efficient to create a new ClientContext for each site URL and for each query, such as getting site users, lists, groups, and group members from the Web object? These queries can return a very large number of items, and CSOM does not support paging when retrieving data from Web properties. Because of this, there is a risk of memory issues. In this case, is creating multiple ClientContext objects a good approach? Also, how does ClientContext work internally, and how does it handle memory and performance?35Views0likes0Comments