Office365 OneDrive discovery error

My OneDrive discovery returns a OneDrive tenant error.  The account I am using for o365 is a global admin, sharepoint admin, exchange admin, and Teams service admin.

The OneDrive Discovery application is configured for my onmicrosoft.com tenant using a service account svcQuest, so the only drive it reports back is for svcQuest.  On the node server it has PowerShell 4.0 installed and I did the following from the guide.

Microsoft SharePoint Online Management Shell installed.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
Import-Module -Name Microsoft.Online.SharePoint.PowerShell
Connect-SPOService -Url "https://<tenant>-admin.sharepoint.com"
Set-SPOTenant -LegacyAuthProtocolsEnabled $True
Disconnect-SPOService

On the Enterprise Reporter server PowerShell 5.1 is installed and it is only using Basic Authentication.  

Here is some of the bottom portion of the log file:

<le ts="2019-06-19T15:58:11.7282814Z" l="ERROR" s="Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive" t="40"><m>Message: The underlying connection was closed: An unexpected error occurred on a receive.</m><ex>System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---&gt; System.IO.IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ---&gt; System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
--- End of inner exception stack trace ---
at System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)
at System.Net.TlsStream.EndRead(IAsyncResult asyncResult)
at System.Net.Connection.ReadCallback(IAsyncResult asyncResult)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)</ex></le>
<le ts="2019-06-19T15:58:11.7595542Z" l="ERROR" s="Quest.Reporter.Core.Node.JobManagement.TaskExecutionQueueEntry" t="40"><m>ReportException(dd07e604-41eb-4c09-91db-26fa827b0596) called. ObjectName: fxxxxxxxxx
ErrorDescription: Code: generalException
Message: An error occurred sending the request.

ErrorMessageID: OneDrive_TenantError
ErrorMessageStack: at Microsoft.Graph.HttpProvider.&lt;SendRequestAsync&gt;d__21.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.HttpProvider.&lt;SendAsync&gt;d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.BaseRequest.&lt;SendRequestAsync&gt;d__36.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.BaseRequest.&lt;SendAsync&gt;d__32`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.GraphServiceUsersCollectionRequest.&lt;GetAsync&gt;d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at MicrosoftCloud.Client.OneDrive.GraphUsers.&lt;GetUsersAsync&gt;d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive.&lt;ProcessTenant&gt;d__40.MoveNext()
</m></le>
<le ts="2019-06-19T16:30:18.4426725Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.Processors.DiscoveryCollectionTaskProcessor" t="2fb1be58-f8f5-4fcc-b9e3-2844a87dfcb4"><m>Mapping Task 2fb1be58-f8f5-4fcc-b9e3-2844a87dfcb4 - xxxxxxxxxxxxxv</m></le>
<le ts="2019-06-19T16:30:23.7549585Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive" t="32"><m>Extracted user list, cumulative time = 00:00:04.96</m></le>
<le ts="2019-06-19T16:55:09.8113074Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive" t="16"><m>Extracted drive list, cumulative time = 00:24:50.91</m></le>
<le ts="2019-06-19T16:55:19.2641557Z" l="ERROR" s="Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive" t="41"><m>ProcessTenant: Error during 'ProcessTenant' call (fxxxxxxxxxxxx)</m><ex>System.ArgumentNullException: Value cannot be null.
Parameter name: collection
at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
at Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive.&lt;ProcessTenant&gt;d__40.MoveNext()</ex></le>
<le ts="2019-06-19T16:55:19.2798005Z" l="ERROR" s="Quest.Reporter.Core.Node.JobManagement.TaskExecutionQueueEntry" t="41"><m>ReportException(2fb1be58-f8f5-4fcc-b9e3-2844a87dfcb4) called. ObjectName: fxxxxxxxxxx
ErrorDescription: Value cannot be null.
Parameter name: collection
ErrorMessageID: OneDrive_TenantError
ErrorMessageStack: at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
at Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive.&lt;ProcessTenant&gt;d__40.MoveNext()
</m></le>

Before the problem was I was only getting drive info back on the account I used for the discovery.  But now I get the errors above.

Mike

  • Hello,

    No problem for the length.  Appreciate the extra information on the error you are experiencing to help assist. 

    This error is due to throttling by Microsoft.   Microsoft will implement throttling on Azure and Office 365 collectors when too many requests are being sent at once.  The throttling message causes the collection to be paused and delayed.  We have built our OneDrive collector to quickly collect all files and folders and this can cause throttling from Microsoft. 

    To prevent this error we suggest using multiple credentials for the OneDrive discovery.   

    Please read the following section in our documentation for best practices for Office 365 discoveries.  https://support.quest.com/technical-documents/enterprise-reporter/3.2/configuration-manager-user-guide/17#TOPIC-1138213 

    In addition, the information you have provided you are using the correct permissions on the discovery credentials and have the required prerequisites. Ensure when adding alternate discovery credentials they have the same permissions.  For full information on OneDrive permissions for discovery see: https://support.quest.com/technical-documents/enterprise-reporter/3.2/configuration-manager-user-guide/6#TOPIC-1138169  In particular pay attention to the requirement for the discovery credentials must have site collection administrator rights to each drive that is being collected.   Also note the supplied solution article for adding site collection administrator rights to multiple drives. https://support.quest.com/enterprise-reporter/kb/289970/how-to-add-an-account-to-the-personal-sharepoint-site-collection-onedrive-administrators-for-each-onedrive-enabled-user-in-a-tenant 

    Hope this helps further.  Let us know how things are progressing.

    -Angela

  • Ok I tried a 2nd discovery credential.  First i ran it by itself to make sure it work and I got the same results as the first account only the drive changed.  So I then ran it with both accounts in the discovery and got the ErrorDescription: Value cannot be null the first time.  The second time i ran it i got the same result as only using 1 credential, it only gave me the size and space left of 1 drive.  

    <le ts="2019-06-20T10:26:28.0652854Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.Processors.DiscoveryCollectionTaskProcessor" t="d963d38c-b6c5-4861-88a6-752cc29b9d1a"><m>Mapping Task d963d38c-b6c5-4861-88a6-752cc29b9d1a - fiXXXXXXcom/m></le>
    <le ts="2019-06-20T10:26:34.7991063Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive" t="18"><m>Extracted user list, cumulative time = 00:00:05.60</m></le>
    <le ts="2019-06-20T10:50:37.2834762Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive" t="44"><m>Extracted drive list, cumulative time = 00:24:08.21</m></le>
    <le ts="2019-06-20T10:50:45.0471274Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.Common.DriveCollector" t="44"><m>Discovery finished processing 0 folders and files for owner: svcQuest, elapsed time: 00:00:03.30</m></le>
    <le ts="2019-06-20T11:51:17.0522315Z" l="WARN" s="Quest.Reporter.Core.Node.JobManagement.SmartNode.SmartNodeMonitor" t="13"><m>CalculateTasksToRequest(): ACT: 1. CPU: [14] 3 4 4 25 39 8 12 16. REQ: 8</m></le>
    <le ts="2019-06-20T11:52:36.8436125Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.Processors.DiscoveryCollectionTaskProcessor" t="a317c63d-cba1-4653-a7a7-4190d7210783"><m>Mapping Task a317c63d-cba1-4653-a7a7-4190d7210783 - fiXXXXXXcom</m></le>
    <le ts="2019-06-20T11:52:44.2650164Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive" t="40"><m>Extracted user list, cumulative time = 00:00:05.85</m></le>
    <le ts="2019-06-20T12:11:26.6569388Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.OneDrive.Collector.DiscoverOneDrive" t="72"><m>Extracted drive list, cumulative time = 00:18:48.33</m></le>
    <le ts="2019-06-20T12:11:33.7345865Z" l="WARN" s="Quest.Reporter.Jobs.Discovery.Common.DriveCollector" t="19"><m>Discovery finished processing 0 folders and files for owner: svcQuest, elapsed time: 00:00:02.93</m></le>

  • Hello,

    I am only seeing warnings listed and will need more information about the "Value cannot be null" error seen.  And I would like to ensure that all of your data is being collected and help you to confirm that.   To do this, I would like for you to contact your Quest support representative. 

    Before contacting support also verify the version of your installation.  Our latest release does have some resolved issues related to OneDrive.  https://support.quest.com/enterprise-reporter/kb/277370/enterprise-reporter-3-2-what-is-new-and-resolved . 

    Thanks,

    -Angela