July 26, 2020

In Brown v. Tellermate Holdings, Ltd., No. 2:11-cv-01122-JLG-TPK, 2014 U.S. Dist. LEXIS 90123 (S.D. Ohio July 1, 2014), Magistrate Judge Terence Kemp faulted the Defendant for failing to identify and preserve data saved with salesforce.com.   He ruled that counsel did not meet its obligation under Rule 26(g) to make a reasonable inquiry into the existence of relevant documents, and issued sanctions. 

Specifically, Judge Kemp found that Tellermate:

1. Failed to uncover any information about a salesforce.com database.

2. Did not preserve the data on salesforce.com

3. Made false statements to the Plaintiff's counsel that damaged their ability to conduct discovery efficiently. 

The Court concluded that, ". . . it is not fair to place the entire blame on Tellermate, even if it must shoulder the ultimate responsibility for not telling counsel what, collectively, it knew or should have known to be the truth about its ability to produce the salesforce.com information.   it is hard to overemphasize the fact that none of these representations made any sense at all in light of the way in which Tellermate employees used salesforce.com to improve their sales performance; if they could not go back and see the information after they entered it, it was of little use to them, and Tellermate would not have paid for the licenses for them to  use it. Finally, to make matters worse, counsel interjected the totally frivolous argument that the licensing agreement prevented Tellermate from obtaining and disclosing its own information, when the terms of that agreement said just the opposite. This was more than just an abdication of responsibility; it was deliberate obfuscation of the issue. As the facts also demonstrate, this course of conduct was in direct violation of the duty, imposed by federal common law, to preserve relevant evidence. "  Id. at *32-34. 

July 25, 2020

The Tip of the Night for May 8, 2018, discussed how to use XCOPY in a batch file to both copy files to a new location and rename them.  Here's another approach.

If this format is used, with the XCOPY command simply followed by the current path of the files and then the new path with the new name:

XCOPY "C:\FooFolder\beer\DOC\042611 Computer Forensic Expert.doc" "C:\FooFolder\Chicago\Report1.doc"
XCOPY "C:\FooFolder\beer\DOC\AIPLANewsletterMarch2005.doc" "C:\FooFolder\Chicago\Report2.doc"
XCOPY "C:\FooFolder\beer\DOC\Budget Cut Memo - AS - v2.doc" "C:\FooFolder\Chicago\Report3.doc"
XCOPY "C:\FooFolder\beer\DOC\Budget Cut Memo - AS.doc" "C:\FooFolder\Chicago\Report4.doc"
XCOPY "C:\FooFolder\beer\DOC\Do You Have The Time_master.doc" "C:\FooFolder\Chicago\Report5.doc"
XCOPY "C:\FooFolder\beer\DOC\Proposed_ED_Rules_and_Standards_2004.doc" "C:\FooFolder\Chicago\Report6.doc"
XCOPY "C:\FooFolder\beer\DOC\Sample NonCompet Agreement Assign1B.doc" "C:\FooFolder\Chicago\Report7.doc"
XCOPY "C:\FooFolder\beer\DOC\sanctions_chart.doc" "C:\FooFolder\Chicago\Report8.doc"
XCOPY "C:\FooFolder\beer\DOC\TwitterArticle.doc" "C:\FooFolder\Chicago\Report9.doc"
XCOPY "C:\FooFolder\beer\DOC\WDPAApplicationforAppointmentasE-DiscoverySpecial Master.doc" "C:\FooFolder\Chicago\Report10.doc"

. . . you will be prompted to specify if the target is a file or directory.

The script stalls out and you need to respond for each line of code. 

You can get around this problem by changing the beginning of each line to:

echo F|xcopy /S /Q /Y /F

The /S switch will account for subfolders. /Q hides the file names during the copying process.   /Y will overwrite any existing files.  /F will display the file name used in the destination. 

July 24, 2020

Legal briefs often cite to the Congressional Record, which contains a record of debates and proceedings before the Senate and the House of Representatives.   However, the Congressional Record has not always been around, and speeches and committee hearing transcripts from Congressional sessions earlier than 1873 will not be found in the Congressional Record. 

From 1789 to 1824 debates before both Houses of Congress were published in the Annals of Congress.   The Annals of Congress can be found on the web site of the Library of Congress hereThe Annals are fully text searchable. 

A record of Congressional proceedings from 1824 through 1837 is contained in the Register of Debates in Congress, which is also available on the Library of Congress web site.  

The Congressional Globe was used for the publication of votes, roll calls, debates, and all other Congressional records between 1837 and 1873.    Hein Online also has searchable images of these predecessors to the modern Congressional Record.  See: https://heinonline.org/HOL/Index?index=congrec/conglob&collection=congrec 

July 23, 2020

This month, in Data Protection Commissioner v Facebook Ireland and Maximillian Schrems, the Court of Justice of the European Union invalidated a 2016 decision on the adequacy of the EU-US Data Protection Shield.    See the judgment posted here

The ruling means that companies transferring data to the United States may be fined under the GDPR, since American measures to protect the privacy of personal data are inadequate. 

In 2015, the Court had ruled that the United States did not provide an adequate level of protection for the personal data of Maximillian Schrems.  Facebook transferred Schrems' data to servers located in the United States.   Schrems re-filed his complaint, and sought to suspend future transfers of his personal data by Facebook Ireland to the United States.  These are the key points of its July 2020 decision:

1. Data processing by a third country for national defense and public safety falls within the scope of the GDPR. 

2. Personal data transferred to a third country must be subject to the same level of protection guaranteed in the EU under the GDPR.

3. Assessments of the level of protection should take into account the contract entered into by the EU data exporter and access to the data by the public authorities of the third country. 

4. Supervisory authorities must prohibit the transfer of personal data to a third country where the standard data protection clauses cannot be complied with, and the personal data cannot be protected by other means. 

5. The Court did not invalidate its prior decision, 2010/87, that requires a data exporter and the data recipient to verify that the level of protection is adequate prior to the transfer and to terminate a contract if the protection is found to be inadequate. 

6. "The limitations on the protection of personal data arising from the domestic law of the United States on the access and use by US public authorities . . . are not circumscribed in a way that satisfies requirements that are essentially equivalent to those required under EU law, by the principle of proportionality, in so far as the surveillance programmes based on those provisions are not limited to what is strictly necessary."

7. In reaching its conclusion, the Court stressed the importance of the fact that data subject would not have a cause of action before a court that could provide the level of protection required by EU law by issuing a decision binding on United States intelligence services. 

July 22, 2020

You can use the below vba code, posted here, to run a single macro on multiple Word files.  My modification of this code will run a macro to list all of the hyperlinks in a set of Word files. 

Follow these steps:

1. Open a new Word document. 

2. Press ALT + F11 to open Visual Basic. 

3. In the project list, select 'ThisDocument', right click and insert a new module. 

4. Paste the below code into the module. 

5. As you can see this consists of two macros.  The first RunMacroMultipleFiles runs the second ListHyperlinks.

6. Edit the eighth line which begins, "path =" to list the file path of the folder which contains the Word files you want to process.

7. Three lines down you can change the macro to either process files in the old .doc format, or the newer .docx format. 

8. Five lines from the bottom edit the first macro to call the second macro below. 

9. The macro will open each file in the designated folder and create new documents with tables listing the links in the source documents, and the text displayed for those links. 

As always, I tested out this macro tonight and confirmed that it works. 

Sub RunMacroMultipleFiles()

Dim file

Dim path As String

' this code taken from Running a macro on all files in a folder - Tips for Module Creation

' Path to your folder. MY folder is listed below. I bet yours is different.

' make SURE you include the terminating "\"


path = "C:\FooFolder\doc\"

'Change this file extension to the file you are opening. .htm is listed below. You may have rtf or docx.


file = Dir(path & "*.docx")

Do While file <> ""

Documents.Open FileName:=path & file

' This is the call to the macro you want to run on each file the folder

'YOU MUST EDIT THIS. lange01 is my macro name. You put yours here.

Call ListHyperlinks

' set file to next in Dir

file = Dir()


End Sub

Sub ListHyperlinks()
Dim srcDoc As Document, destDoc As Document
Dim HL As Hyperlink

Set srcDoc = ActiveDocument
Set destDoc = Documents.Add

For Each HL In srcDoc.Hyperlinks
destDoc.Range.InsertAfter _
HL.TextToDisplay & vbTab & HL.Address & vbCr

End Sub

July 21, 2020

Keep in mind that in order for view / edit / add / delete permissions to an analytics index in a Relativity workspace to be effective, having those permissions alone is not enough.   A user must also have permissions for the search index in order to use analytics index permissions. 

Generally, only one search index is created for a workspace, but multiple indexes may be created if there are large sets of documents in multiple languages, or if searches need to be limited to a specific subset of documents.   

A user with permissions to a search index without permissions to an analytics index, will still have those search index permissions activated. 

July 19, 2020

When a Relativity admin creates a conceptual index, it will enable five different means of reviewing documents in a workspace to be performed. 

1. Categorization sets can be created that use a set of example documents to find conceptually similar documents. 

2. You can create clusters of conceptually similar documents without the same user input required with categorization.  A few documents can be selected without assembling sets of example documents, or defining categories. 

3. Concept searching can be run simply by selecting a block of text and searching across the workspace for documents with similar conceptual content. 

4. Keyword expansion will find terms that are conceptually related to a selected term.

5. In the document viewer, you'll be able to select 'Find Similar Documents' to find documents related to the one you are reviewing. 

July 18, 2020

In his blog post of June 17, 2020, the great Craig Ball discussed how to determine the precise time that a gmail message was sent by reviewing the original code of the message.  This can help clear up confusion caused by email threads between people in different time zones.  Here's a rundown of how to do this. 

1. In an email message sent from a gmail account, select the drop-down menu by clicking on the three dots to the right of the message's header, and then select 'Show original'. 

2. This will open the raw code for the message.  Review the code for references to a timestamp.  You should be able to find these by searching for the tag, "t=".   The value following this tag measures the number of 100 nanosecond intervals between the precise time the message was sent and midnight on January 1, 1601.   Windows uses this arbitrary date (or the date of the first full century since the adoption of the Gregorian calendar) as a yardstick.  In this example we find the number, '1594755105' used as a time code. 

3. On the site of Dan's Tools, there is an epoch timestamp converter.  When the number 1594755105 is entered it gives the precise time of July 14, 2020, 19:31:45 UTC. 

July 18, 2020

In Excel, it's not possible to use VLOOKUP if the value you are searching for in a range is longer than 255 characters.   In this example, the value in cell B3 is longer than 255 characters:

. . . so it can't be found in the range G:H and we get a #VALUE! error, even though there is a match for this value in G7.  (The lengths of each cell in column G are shown in column I.)   

We can get around this problem by using the below function posted here,   

Function betterSearch(searchCell, A As Range, B As Range)
        For Each cell In A
            If cell.Value = searchCell.Value Then
                    betterSearch = B.Cells(cell.Row, 1)
                    Exit For
            End If
            betterSearch = "Not found"

End Function

This function will autofill when you type it in the cell.  


Enter the searched for value, the column to find it in, and then the column the adjacent value should be returned from. 

 A search for value of greater than 255 characters gets a result. 

July 17, 2020

Tonight, I tested out Rapid PDF Count, a utility from Traction software, available for download here.  A license costs $80.  The software is designed to generate a count of the number of pages in a set of multiple PDF files.  It will process all PDF files in a selected directory which has multiple subfolders.

Under setup . . . options, you can check off a box which will set the utility to also generate a word count for each of the PDF files. 

The list Rapid PDF Count generates can be exported.  It's a good way of finding which files in a directory have not be made text searchable.   Note there's a field which indicates whether or not there are searchable words on every page of a PDF file. 

Please reload

Please reload

Sean O'Shea has more than 15 years of experience in the litigation support field with major law firms in New York and San Francisco.   He is an ACEDS Certified eDiscovery Specialist and a Relativity Certified Administrator.

The views expressed in this blog are those of the owner and do not reflect the views or opinions of the owner’s employer.


All content provided on this blog is for informational purposes only. The owner of this blog makes no representations as to the accuracy or completeness of any information on this site or found by following any link on this site. The owner will not be liable for any errors or omissions in this information nor for the availability of this information. The owner will not be liable for any losses, injuries, or damages from the display or use of this information.


This policy is subject to change at any time.


Contact Me With Your Litigation Support Questions:


  • Twitter Long Shadow

© 2015 by Sean O'Shea . Proudly created with Wix.com