Dodeca SharePoint Connector

Overview

The Dodeca SharePoint Connector provides connectivity to SharePoint Online and on-premises SharePoint sites. It is implemented as a native connector module and is imported into a Dodeca tenant like any other connector module.

The module provides three capabilities:

  • SharePointConnection — a reusable connection/authorization definition for a SharePoint site.

  • SharePointConnector — a DataSet connector that downloads a single SharePoint document and adapts it into a Dodeca DataSet (e.g., via an Excel or CSV adaptor).

  • SharePointOperations — a WorkbookScript method that uploads, downloads, lists, and deletes SharePoint documents, list items, and attachments from a workbook script.

Prerequisites

  • The connector module imported into the Dodeca tenant and the application restarted.

  • For the recommended authentication path (see below): the Microsoft Authorization Connector must be downloaded, imported into the Dodeca tenant, and the application restarted before a SharePoint connection can use it.


Authentication Modes

SharePointConnection supports two authentication approaches. Only the first is supported for new connections.

Mode Property Status

Microsoft Authorization Connector

OAuthConnectionID

Recommended

Direct (legacy) OAuth

TenantID / ClientID / ClientSecret / ClientCertificate / ClientCertificatePassword

Deprecated

Set OAuthConnectionID to the ID of a Microsoft Authorization Connector connection (an OAuthConnection of kind MicrosoftConnection). The Microsoft Authorization Connector performs the actual Entra ID (Azure AD) sign-in — interactive delegated login, client credentials, or certificate, depending on how that connection is configured — and SharePointConnection requests a token scoped to the SharePoint site from it.

Property Value

OAuthConnectionID

ID of a Microsoft Authorization Connector connection

SiteUrl

The SharePoint site URL, e.g. https://contoso.sharepoint.com/sites/finance

This path authenticates directly against the Microsoft identity platform (Entra ID) and is unaffected by the Azure ACS retirement described below.

Choosing App-Only vs. Delegated (Public Client) Authentication

Whether the Entra app registration behind a SharePoint connection is configured as app-only (confidential client) or delegated (public client) determines whose identity SharePoint sees for every operation this connector performs:

App-only (confidential client) Delegated (public client)

Credential

ClientSecret or ClientCertificate

None — no secret to protect

Acts as

The Entra app itself

The signed-in Dodeca user

SharePoint sees

The app’s identity for every operation

Each user’s own identity

Best suited to

A privileged, unattended system (e.g., a scheduled report/close-book generator) that can reasonably protect a secret

Arbitrary end users publishing to SharePoint through Dodeca, where no shared secret should need to be distributed to client workstations

If a ClientCertificate (or, formerly, ClientSecret) would otherwise need to be installed on every end-user workstation just so that arbitrary users can publish documents, that’s a sign the connection should be reconfigured as delegated/public client instead: Dodeca then publishes to SharePoint on the signed-in user’s behalf, and no secret needs to be protected on the client at all.

Redirect URI (reply URL) for delegated / public client apps

A public client Entra app registration needs a redirect URI (reply URL) of type "Mobile and desktop applications". Dodeca uses MSAL.NET, which by default targets the standard native-client redirect URI:

https://login.microsoftonline.com/common/oauth2/nativeclient

Register this exact URI on the Entra app registration and no further configuration is required — both the OAuthConnectionID (Microsoft Authorization Connector) path and the legacy direct SharePointConnection delegated path (OAuthInteractive, or neither ClientSecret nor ClientCertificate set) use it automatically via MSAL’s default redirect URI.

Only the OAuthConnectionID path supports overriding this with an arbitrary custom redirect URI, via the RedirectUri property on the Microsoft Authorization Connector connection — set it there and register the matching value on the Entra app registration. The legacy direct SharePointConnection properties have no equivalent override and always use the MSAL default.

Granting Sites.Selected Access to a Specific SharePoint Site

When the Entra app registration behind a SharePoint connection uses the Sites.Selected permission — recommended over tenant-wide Sites.Read.All/Sites.ReadWrite.All — configuration is a two-step process, and both steps are required:

  1. Consent to the Sites.Selected permission on the app registration in Entra ID. Note that Sites.Selected exists on two API resources — Microsoft Graph and SharePoint (Office 365 SharePoint Online). This connector calls SharePoint directly (CSOM/REST with SharePoint-audience tokens), so the SharePoint Sites.Selected permission is the one that gates its calls; consenting the Graph one as well is harmless and covers Graph-based tooling.

  2. Grant the app access to each specific site, with a role, via the Microsoft Graph site permissions endpoint. An app registration with Sites.Selected consented but no site grants has access to no sites at all — that is the designed behavior of the permission, not a misconfiguration.

The roles that can be granted per site:

Role Allows

read

Reading the metadata and contents of the site’s lists and libraries

write

Everything read allows, plus creating and modifying content — the minimum for publishing documents with SharePointOperations (AddDocument, AddAttachment, AddListItem, and the Delete* overloads)

owner / fullcontrol

Full control of the site

An administrator can create and verify grants with PnP PowerShell:

# Inspect the grants that already exist on the connected site
Get-PnPAzureADAppSitePermission

# Grant the app read+write access to a specific site
Grant-PnPAzureADAppSitePermission -AppId <client-id> -DisplayName "<app display name>" `
    -Permissions Write -Site https://contoso.sharepoint.com/sites/finance

or by calling the Graph endpoint directly:

POST https://graph.microsoft.com/v1.0/sites/{siteId}/permissions
Content-Type: application/json

{
  "roles": ["write"],
  "grantedToIdentities": [
    { "application": { "id": "<client-id>", "displayName": "<app display name>" } }
  ]
}

Creating a site-level grant is itself a privileged operation: the identity making the call needs Sites.FullControl.All (or to be a sufficiently privileged SharePoint/tenant administrator signing in interactively with PnP PowerShell).

Delegated connections intersect with the user’s own permissions. For a delegated (public client) connection, effective access is the intersection of the signed-in user’s SharePoint permissions and the app’s site grant — the app can never exceed the user, and the user can never exceed the app’s grant through Dodeca. In particular, "the user can browse to the library and upload manually" demonstrates the user’s access only; it says nothing about whether the app has a grant.

Symptom of a missing (or read-only) site grant: a site-only connection test can report success while every document library and list operation fails with The specified document library or path could not be found. — regardless of the path used, including paths that resolve fine in a browser. Without a test document library configured, the connection test verifies only that the signed-in identity can open the site, and SharePoint reports folders the app cannot access as non-existent rather than as access denied. Configure the focused read/write test described in Testing a SharePoint Connection below to exercise the same library and upload paths as the real operation. If a path has been verified in a browser and operations still report it as not found, check the site grant before debugging the path.

A read-only grant is not limited to failing the write itself: the document library lookup that precedes the write has been observed to be denied as well, so the operation fails with "could not be found" before it ever attempts to upload — for every path, including one that is provably correct. When a library or list cannot be resolved, the Smart Client log records the path and whether the connection can view items on the site. Add-items permission is checked and reported by the focused connection test only after an actual upload fails; view items = yes, add items = no there is the signature of a read-only grant that needs upgrading to write. Workbook-operation errors stay concise and report only a conclusion the lookup or probes established — see the Logging and Diagnostics section below.

Deprecated: direct OAuth properties

TenantID, ClientID, ClientSecret, ClientCertificate, and ClientCertificatePassword are legacy properties retained as a migration lifeline for connections created before the Microsoft Authorization Connector existed. They are hidden in the property grid unless already populated, and new connections should use OAuthConnectionID instead. Saving a connection metadata change deliberately removes these deprecated values, so migrate the connection to OAuthConnectionID before editing and saving it. When OAuthConnectionID is not set, the connection falls back to one of three direct token-acquisition flows depending on which properties are populated:

If set Flow used Identity platform

ClientSecret

App-only token via Azure ACS (https://accounts.accesscontrol.windows.net)

Azure ACS — being retired, see below

ClientCertificate (and no ClientSecret)

Entra ID app-only token via MSAL confidential client, using TenantID + ClientID + the certificate

Entra ID (Azure AD)

Neither

Entra ID delegated token via MSAL public client (interactive sign-in, with silent/cached retry), using TenantID + ClientID

Entra ID (Azure AD)


⚠ Azure ACS Retirement and This Connector

Microsoft has been retiring Azure Access Control Service (ACS), the legacy accounts.accesscontrol.windows.net app-only authentication mechanism originally used by SharePoint Add-ins and script-based app-only principals. Per Microsoft’s retirement announcement, ACS stopped issuing tokens for new tenants on November 1, 2024, and was fully retired for all remaining tenants on April 2, 2026 — a date that has now passed. SharePoint Online app-only connections that rely on an ACS-issued token stop authenticating once retirement takes effect for a given tenant, regardless of client code; there is no workaround short of switching to a non-ACS credential flow. See Microsoft’s retirement FAQ if you need to confirm rollout status for a specific tenant.

This connector has exactly one code path that depends on Azure ACS: the ClientSecret-based flow (SharePointConnection.ClientSecret set, or the WorkbookScript AuthenticationPolicy=OAuthClientSecret). Internally this calls AcsTokenHelper against https://accounts.accesscontrol.windows.net to obtain an app-only token using a ClientID/ClientSecret pair registered as a SharePoint "Add-in" (S2S) principal. This flow is deprecated in the connector’s metadata and should not be used for new connections against SharePoint Online. Given the April 2, 2026 cutoff has passed, any connection still using this flow should be treated as non-functional (or at imminent risk, depending on tenant-level rollout) rather than merely deprecated.

Every other authentication path in this connector — the recommended OAuthConnectionID path, the ClientCertificate path, the OAuthInteractive/OAuthPassword delegated MSAL paths, and on-premises DefaultNetworkCredentials/SpecifiedCredentials — authenticates directly against Entra ID (Azure AD) or Windows-integrated auth, not Azure ACS, and is unaffected by the retirement.

If you currently have a SharePoint connection using ClientSecret (or AuthenticationPolicy=OAuthClientSecret): follow Microsoft’s ACS-to-Azure-AD upgrade guide alongside these connector-specific steps.

  1. Register (or reuse) an Entra ID app registration for the connector — see Granting access via Entra ID App-Only for the certificate-based app-only setup this connector expects.

  2. Either:

    • Import the Microsoft Authorization Connector and switch the SharePoint connection to OAuthConnectionID (recommended — this also gives you delegated or certificate-based app-only auth managed centrally), or

    • Add a certificate credential to the app registration and switch to ClientCertificate on the SharePointConnection (or AuthenticationPolicy=OAuthClientCertificate in the WorkbookScript method) as a drop-in app-only replacement.

  3. Grant the app registration SharePoint permissions under Entra ID/Microsoft Graph rather than the legacy SharePoint "Add-in" permissions model tied to ACS. Prefer the Sites.Selected permission over tenant-wide Sites.Read.All/Sites.ReadWrite.All where possible — it scopes the app registration to specific site collections, granted per-site via the Graph site permissions endpoint, rather than every site in the tenant. See "Granting Sites.Selected Access to a Specific SharePoint Site" above for the required per-site grant, without which the app registration has no access at all.


Testing a SharePoint Connection

The connection editor can test only the SharePoint site, or it can focus the test on the document library that real workbook operations will use. The focus properties are optional and appear in the Test category alongside TestTokens:

Property Purpose

TestDocumentLibraryPath

Resolves a document library or folder by relative path, using the same path composition and GetDocumentFolder code path as SharePointOperations. This takes precedence over TestDocumentLibraryName when both are set.

TestDocumentLibraryName

Resolves the root of a document library by its display title when TestDocumentLibraryPath is blank. Use a title such as Documents, not a URL segment or folder path such as Shared Documents/Parent/Child.

TestDocumentLocalPath

Optional local file to upload through SharePointOperations.AddDocument, proving write access as well as read access. A test library name or path is required when this is set. The property editor provides a file picker.

With neither library property configured, the test preserves the original scope: it acquires a token and performs a real read of the SharePoint site. A success reports Connected successfully. That proves sign-in and site-open access only; it does not prove that a document library is reachable or writable.

To test a library root by display title, set TestDocumentLibraryName to a value such as Documents and leave TestDocumentLibraryPath blank. To test a library URL or a specific subfolder, leave TestDocumentLibraryName blank and set TestDocumentLibraryPath to a relative path such as Shared Documents/Parent/Child. A path-like value in TestDocumentLibraryName is rejected with guidance to use TestDocumentLibraryPath.

With a test library configured, the connection test fails unless the same resolver used by workbook operations can open that library or folder and read its item count. A success reports Document library read test passed. followed by the resolved server-relative URL and item count; a test resolved by display title also reports the library description when one is available. A failure begins with a concise user-facing reason and includes SharePoint’s exception message when one is available. Because this test is run by an administrator to validate configuration, it then reports the supplied library name or path, the server-reported site URL, the exact URL requested from SharePoint, and any resolution or permission evidence captured by the probes.

When TestDocumentLocalPath is configured, the test then uploads that file through the real AddDocument operation. This persisted property names a file on the Smart Client performing the test; another administrator or machine must select a locally accessible file before rerunning the write test. The uploaded copy receives a unique name beginning Dodeca-SharePoint-Connection-Test- and is deliberately left in the target folder so an administrator can verify it in SharePoint; remove it manually after verification. If the actual upload fails on SharePoint Online, the result reports both view-items and add-items access; view items = yes, add items = no identifies a read-only grant or a delegated user without contribute rights. A passing write test proves that this connection could upload that artifact at the time of the test. It does not promise that another folder, a later permissions state, or a different signed-in user will behave the same way.

For a delegated connection, effective access remains the intersection of the signed-in user’s SharePoint permissions and the app registration’s grant. Test with the same user who will run the workbook operation; an administrator’s successful test does not prove another user’s access. A successful delegated connection test includes a reminder that the result reflects both the signed-in user’s permissions and the app’s site access. If a focused read or write test fails for every known-good path, review Granting Sites.Selected Access to a Specific SharePoint Site above and the diagnostics below.


SharePointConnector (DataSet Connector)

Downloads a single document from a SharePoint document library and adapts its content stream into a DataSet using a configured IDataSetAdaptor (e.g., an Excel or delimited-text adaptor).

Property Value

ConnectionID

ID of the SharePointConnection used to authenticate

DocumentLibraryName

Name of the document library, e.g. Shared Documents

DocumentName

Name of the document to retrieve

Both DocumentLibraryName and DocumentName are required; the connector validates this before querying.


SharePointOperations (WorkbookScript Method)

Uploads, downloads, lists, and deletes SharePoint documents, list items, and attachments from a workbook script. The method is exposed to workbook scripts as SharePointOperations (headless) and to grid controls bound to a WorkbookView as WorkbookViewSharePointOperations, and is invoked via one of the overloads below.

Overload Description

AddAttachment

Uploads a local file as a list item attachment; replaces the attachment if it already exists

AddDocument

Uploads a local file to a document library; creates a new version if the document already exists

AddListItem

Adds a list item (by Title) if it doesn’t already exist; no-ops if it does

GetAttachment

Downloads a list item attachment to a local file

GetDocument

Downloads a document from a document library to a local file

GetListItems

Retrieves the item titles for a list into a DataCache

DeleteAttachment

Deletes a list item attachment

DeleteDocument

Deletes a document

DeleteListItem

Deletes a list item

ValidateCredentials

Validates that the resolved credentials can connect to and open the site

Each overload accepts a ConnectionID argument for the recommended SharePointConnection-based authentication path described above, plus a large set of legacy per-call arguments (SiteUrl, AuthenticationPolicy, TenantID, ClientID, ClientSecret, ClientCertificate, ClientCertificatePassword, Username, Password, Domain, SiteType) that are used only when ConnectionID is omitted. When ConnectionID is specified, all of the legacy arguments are ignored.

For the full argument reference for every overload, see the online documentation: https://developer.dodecasoftware.com/dodeca/SharePoint/wbs-methods-documentation.html

Legacy AuthenticationPolicy values (used only without ConnectionID)

AuthenticationPolicy Description Azure ACS dependency

DefaultNetworkCredentials

Uses the current Windows security context (NTLM/Negotiate/Kerberos). On-premises/extranet only.

None

SpecifiedCredentials

Uses Username, Password, and optionally Domain. On-premises/extranet only.

None

OAuthClientCertificate

Entra ID app-only token using TenantID + ClientID + ClientCertificate (+ optional ClientCertificatePassword).

None

OAuthInteractive

Entra ID delegated token using TenantID + ClientID, interactive with silent/cached retry.

None

OAuthPassword

Entra ID delegated token using ClientID + Username + Password (resource owner password flow).

None

OAuthClientSecret

App-only token using ClientID + ClientSecret against Azure ACS.

Yes — see retirement notice above

SiteType (Online, OnPrem, or Extranet) controls how DefaultNetworkCredentials/SpecifiedCredentials credentials are applied — Online uses SharePoint Online cookie-based auth, Extranet uses an explicit NTLM credential cache, and OnPrem passes the credential directly.


Logging and Diagnostics

What a failed operation reports

A failed lookup is reported in two places, because it has two audiences. The error states the conclusion, for the person who ran the view. The Smart Client log records the evidence behind it, for whoever has to diagnose it afterwards.

The error names what was concluded and where to look for the rest:

The specified document library or path could not be found. The folder "July" could not
be found in "Shared Documents/2026". The Smart Client log records the path that was
requested and what was found there.

Nothing in that message requires knowing how the connection is configured, and it exposes neither the structure of the site nor what the connection is permitted to do there.

The SharePointOperations overloads that take a DocumentLibraryPath or ListPath resolve that path against the site’s server-relative URL as reported by SharePoint, and then request the resulting URL. All three values are recorded in the log, so that a mistyped path can be told apart from one that was constructed incorrectly:

Supplied path: Shared Documents/Reports
Site URL reported by SharePoint: /sites/finance
URL requested from SharePoint: /sites/finance/Shared Documents/Reports

A duplicated site segment (/sites/finance/sites/finance/...) or an unexpectedly encoded character is visible immediately in the requested URL, without needing a network trace.

When a document library or folder cannot be resolved, the log also records how far along the path SharePoint could get, and what exists at that point:

Supplied path: Shared Documents/2026/July
Site URL reported by SharePoint: /teams/reports
URL requested from SharePoint: /teams/reports/Shared Documents/2026/July
Resolved as far as: /teams/reports/Shared Documents/2026
Folders found there: April, February, January, March, May, June

A path that was never valid and a path whose final folder has not been created yet produce the same "could not be found" on their own. Reporting the deepest part of the path that does resolve separates them: here the library and the year folder exist and only the month is missing, which is the ordinary outcome for a report that publishes into month-named folders before the month’s folder has been created. When nothing along the path resolves, no such line appears — that points at the site itself, the path’s leading segments, or access.

The folder listing is capped at 25 names, with a count of the remainder.

What SharePoint itself said is recorded too, because its own sentence separates an item that is absent from one the connection cannot reach without any investigation at all:

SharePoint reported: System.IO.FileNotFoundException: File Not Found.
SharePoint reported while investigating: System.UnauthorizedAccessException: Access denied.

The first line is what the lookup itself was told. The second appears when walking back up the path, or reading the permissions, was refused in a different way — which is the case the investigation exists to resolve, so the two are kept apart rather than the first standing for both. When both would say the same thing, only the first is written.

On SharePoint Online, when the document library or list itself could not be resolved, the log additionally records whether the connection can view items on the site, because SharePoint Online reports a library the connection cannot reach as though it does not exist. Add-items access is irrelevant to explaining a read lookup and is not reported here. This reporting is specific to the Online and Standard builds; the on-premises targets neither disguise an inaccessible library as a missing one nor use Sites.Selected grants, so their logs do not raise permissions:

Permissions available to this connection on this site: view items = yes
This connection can view items on this site, so the configured site URL or
document library path is the more likely problem.
Reported permissions Interpretation given

View yes

The configured site URL or library path is the more likely cause. This site-level result does not prove that a particular library is reachable

View no

A permissions problem rather than a missing path

Not reported

The permissions could not be read; access remains a possible cause

Every interpretation that points at a site grant refers the reader to the Granting Sites.Selected Access to a Specific SharePoint Site section, and the log entry closes with that section’s published address:

SharePoint connector documentation:
https://developer.dodecasoftware.com/dodeca/dodeca-sharepoint-connector.html#granting-sites-selected-access-to-a-specific-sharepoint-site

The address is recorded once, on its own line, however many of the lines above refer to it. A section title alone leaves the reader searching, and whoever is reading this log is already stuck.

The error raised for the same failure reports only a conclusion the lookup or probes established, such as the missing folder or an explicit access denial, with no permission values, grant name, or documentation address. A site-level result of view items = yes does not by itself prove that a particular library is reachable, so it is not turned into advice that the path is wrong. Lack of add-items permission is reported as the conclusion of an actual failed write, not as the explanation for a read failure.

This view-items result is reported only when the library or list could not be resolved. When the container resolved and an item inside it was missing — a document that does not exist in a library the connection can read, for instance — neither the log nor the error raises permissions at all, because nothing suggests they are involved. The separate focused connection write test reports add-items access only after an actual upload fails, as described under Testing a SharePoint Connection.

A tolerated miss is recorded but not investigated. Establishing how far the path resolves and what the connection may do costs around ten round trips where the lookup itself took one. When ContinueOnItemNotFound is set, the operation is expected to miss — a script publishing into a folder it will create, or a loop downloading whatever happens to be present — and paying that on every iteration would invite throttling for a message nobody is going to see. The supplied path, the site URL, and the URL requested are still written to the log; the walk and the permissions read are not performed.

For a delegated connection, effective access is the intersection of the signed-in user’s permissions and the app’s site grant, so a permission reported as available to the connection may still be unavailable to the application acting alone. For an app-only connection, the reported permissions are the application’s own.

This permission describes the site, not a particular library. It is read from the web, and an application can report view items = yes and still be denied when it opens a specific document library. Treat the readout as a strong indication rather than proof: view items = yes does not guarantee that a given library can be reached.

Confirming a permissions cause conclusively. With request/response logging enabled, the response to the folder lookup carries the definitive signal. SharePoint returns HTTP 200 with the folder reported as non-existent, and adds a header naming the real reason:

X-MSDAVEXT_Error: 917656; Access denied. Before opening files in this location,
you must first browse to the web site and select the option to login automatically.

Look for that header on the response to the GetFolderByServerRelativeUrl request specifically. When it appears there and not on the surrounding requests, the library was not missing — it was unreachable, and the site grant is what needs fixing. This header is known to appear spuriously in some SharePoint Online responses, so weigh it by where it lands rather than by its presence alone.

Request and response logging

The connector writes its SharePoint traffic to the client’s request/response logging path, using the same toggle and the same folder as every other HTTP-based connector. Both the CSOM protocol calls and the binary transfers performed by document uploads and downloads are captured.

Enable the logging toggle and set the logging path before reproducing the failure. Whether content is captured is decided for each request as that request is created, so a toggle enabled partway through an operation captures only the requests issued after it — never the ones that have already gone out, which are usually the ones being investigated. Enable it first, then reproduce. While the toggle is off, no content is captured and no files are written — request and response streams are passed straight through untouched.

Each request and response is written as a separate file:

Request

<tenant>.HttpRequestMessage.<timestamp>-<n>.request.xml

Response

<tenant>.HttpResponseMessage.<timestamp>-<n>.<status>.response.yml

The files are written by the same writer the other Dodeca connectors use, so they carry the same naming and the same conventions. That writer became reachable to this connector in Dodeca 8.10. Dropped into an earlier client, the connector writes the files itself instead, naming them <tenant>.HttpWebRequest.<timestamp>-<n>.request.xml and <tenant>.HttpWebResponse.<timestamp>-<n>.<status>.response.txt and leaving JSON bodies unformatted. The contents are otherwise the same, and the same exclusions apply. The extension follows the content rather than the direction: .xml for a body that is XML, .yml otherwise. In practice the CSOM protocol requests are XML and their responses are JSON, so look for responses as .yml — searching the folder for .response.xml will find nothing. JSON bodies are indented rather than written as the single line they arrive as. Each file begins with the request line or status line and the headers, as comments.

Four limits apply, so that the folder stays small enough to collect and safe enough to send:

  • Credentials are excluded. The Authorization, Cookie, Set-Cookie, X-RequestDigest, Username, and Password headers are omitted from the logs.

  • Uploaded documents are excluded. A document upload is sent as a multipart request carrying the protocol XML and the file as separate parts. The XML part is logged in full; the file’s part is replaced with a marker recording its size, so an uploaded document never reaches the log folder regardless of how small it is.

  • Request bodies are truncated beyond 256 KB, with a marker recording the full size.

  • Binary responses are recorded by size only. A response whose content type is not textual — which a downloaded Excel workbook, PDF, or image is — is reported as its byte count and content type rather than written to the log folder. A download whose content type is textual, such as a CSV or a text export, is written like any other textual body, subject to the 256 KB truncation. Treat the log folder as capable of holding the content of a downloaded text file.

Independently of the toggle, the Smart Client log records the method and URL of each SharePoint request, which is often enough to identify a wrongly constructed URL without collecting logs at all.


Client Certificate Formats

Wherever a client certificate is accepted (SharePointConnection.ClientCertificate, or the ClientCertificate WorkbookScript argument), the value may be any of:

  • A file path to a certificate file (optionally combined with ClientCertificatePassword).

  • A certificate thumbprint (40 or 64 hex characters), looked up first in CurrentUser\My, then LocalMachine\My.

  • A base64-encoded certificate byte array (optionally combined with ClientCertificatePassword).


Supported SharePoint Versions

The connector module is built separately for each SharePoint target, controlled by the SharePointVersion build property. Download the module build matching your SharePoint environment:

SharePointVersion Target

Online (default)

SharePoint Online / Microsoft 365

Standard

SharePoint Online, built against the netstandard2.0 CSOM libraries

2019

On-premises SharePoint Server 2019 (and later on-prem releases using the same CSOM surface)

2016

On-premises SharePoint Server 2016

2013

On-premises SharePoint Server 2013

On SharePoint 2013 and 2016, DocumentLibraryName or DocumentLibraryPath must be specified explicitly for document operations — there is no default document library fallback on those targets the way there is on 2019-and-later/Online.


Further Reading