Monday, July 31, 2017

Windows 10 Creator's Update and Office Conflicts

Recently, Microsoft pushed the "Creators Update" out to Windows 10. It was available in April but it seems to have been force-pushed in the past 2 days. On my mother-in-law's computer, Creator's caused Excel to render a "Bad Image" message when attempting to start declaring "MSVCP140.dll is either not designed to run on Windows or it contains an error". I attempted the SFC and DISM repairs as advised on Tom's site to no avail. When I attempted an Office repair, Office disappeared completely. At this point, I definitely started to panic.

Fortunately, I noticed a pending reboot due to an install/update. Allowing Windows to install that update and rebooting twice brought Excel and Office back to life. I did have to re-register the software but all is well now. If you encounter this issue, stop what you're doing and install/restart Windows. Anecdotally, I've since hear of many folks encountering similar issues.

Monday, July 02, 2012

Cardinal Blog: "Perfect is coming! But not 'til Tomorrow"

Published on the Cardinal Blog "Perfect is coming! But not 'til Tomorrow"

Sunday, March 11, 2012

Managing Expectations

The touchpad on my oven at my house died about a month ago. It’s a Kenmore so I called Sears. Tough to get that first appointment so they first came out last Saturday. I was pretty sure I knew what was wrong and priced out the part alone at $200. When they offered a $275 “we’ll fix it or replace it with a warranty”, I jumped on it. (It’s worth $75 to avoid me screwing up my oven and have my wife be mad at me. Come to think of it, that’s probably worth a lot more than $75.) Upon arrival, the technician gave me a hard time about the lack of a serial number on the microwave. Huh? (It’s an oven/microwave stack combo and apparently, the serial number is a prerequisite to my service deal.) Is it my fault the serial number is a dinky sticker inside the microwave? No. We found it on the manual but nonetheless, don’t bother me with this. Just fix it.
The technician diagnosed the bad touchpad (“control panel”) and said he would need to order the part. Fine. I then scheduled the next appointment for yesterday (1 week). The technician said UPS would ship the part directly to my house. Fine. Another 4 hour block of time wasted but whatever.
On Thursday, I get an automated call from Sears saying to call them. I call. (BTW, their automated customer service line is annoying: it’s voice recognition that doesn’t often recognize and I can’t understand their CSRs and I’m usually good with accents.) Sears tells me the part won’t arrive until Saturday but that we’re still on. I just need to call them when the part arrives. Fine. My appointment is scheduled for 1-5pm. 1pm rolls around—no part. 1:15pm part arrives.
I call and wade through the annoying call tree. Oh, sorry, you missed the window. You’ll need to reschedule. I’m sorry, what? I said that Sears made a commitment and that the part arriving late wasn’t my fault. If it needed to arrive sooner, Sears should have shipped it in a more expedited fashion. I also said that Sears originally had me scheduled and should be able to fit me in at the end of the day. Nope, can’t do it. Big, long explanation which had nothing to do with me. I was nice and said that it wasn’t my problem. Pay the guy overtime. I have the part. Let’s get that technician out here today and meet your commitment to me. Nope, can’t do it.

Not getting anywhere with the CSR, I asked to speak to a supervisor. Condensing this long post, I was either disconnected or put on hold for 30+ minutes at a time 4 times (!) only to have to re-explain my issue to a non-supervisor. Throughout all this, I never lost my temper. It wasn’t the CSR or technicians fault. They were just doing their job. This was Sears fault. Their logistics and scheduling process was flawed, their call center people weren’t empowered and their call center technology was substandard.
Finally, I reached a supervisor. She told me, point blank, a technician would be out today. Great. Thanks. I’m happy. Crisis averted. Not 15 minutes later, I receive an automated call asking me to call Sears and reschedule.
Now I’m on a mission. Who can I escalate this issue to? The CEO of Sears? Ah, better yet, how about the Internet! I crack off two well-thought Twitter posts expressing my disappointment and dissatisfaction with Sears. 10 minutes later, I get a response from @searscares asking me to Direct Message my contact information. They want to help. Hmmm, ok. It can’t hurt. I get a call from Liz who is taking my case on. Fine. I explain the situation and she agrees it’s unacceptable. She sets off to work on it and will call me back.
Liz calls back about 30 minutes later with bad news. She pulled out all the stops and couldn’t make it happen. I thanked her for trying and we rescheduled. She offered me a gift card which was nice but it didn’t solve my problem. I wasn’t so much upset about my oven (it will get fixed…don’t use it all that much anyway) but disappointed in Sears. They used to be a great American company with a rich history of service. Sears and Roebuck – they were the original mass retailer for crying out loud! And then it hit me…
I had played the role of Sears before. I had failed to manage expectations. Ouch. I suppose we all have/do but this one hurt. On past client efforts, not often, but at times, I had either failed to plan adequately or failed to provide adequate and timely communication resulting in jeopardized deliverables. I hadn’t met the expectations of my client just like Sears hadn’t met mine. It’s all about managing expectations.
Fortunately, I learned about managing expectations [the hard way] a while back and use several approaches to avoid mismanaged expectations:
  • Planning. Yes, it will change but think the process through. It will identify missed elements and incongruent deliverables. “Wait, we can’t complete X before Y.”
  • Contingency plans. Stuff happens. Shipping gets delayed. “If the part doesn’t make it to the house that day, is there another day we can make the repair?”
  • Risk management. An experienced technician would know a week is not enough time for the part to arrive. Empower your folks to spend $15 to expedite shipping (as an example).
  • Timely communication. I’m religious about weekly status reports. However, this needs to be followed up with a face-to-face meeting. There’s too much ambiguity around an email or even more formal written communication. Have a consistent, single point of contact for me.
  • Humility. If you mess up, come clean as soon as possible. If there’s a problem, I want to know about it. Stuff happens. Likely, it’s ok and I’ll respect you more for working with me rather than burying a problem that will multiply into a monster over time.
  • Respect. Don’t blame me for the problem. Own the problem. Make it right. I will contribute to the solution. Don’t use automated calls. Call me. Talk to me. If it’s just a reminder, an email is fine/perfect. Treat my situation as though it were your own. If we’re in this together, I’ll treat you like a trusted partner.
  • Inspection. Is the process flawed? Are the right people in the wrong roles? Are our tools insufficient? How are we doing? What quantitative and qualitative metrics can we monitor over time to judge our effectiveness?
Managing expectations is extremely hard. I fail every day with my family and my teams. But I also succeed and improve with each mistake. That said, I know I’ll never be perfect but must continue to strive toward improvement. Sears needs to do the same.

Sunday, November 13, 2011

Need Help: COALMG Leader

(Cross-posted at

Both Alexei and I enjoy working on the COALMG group. However, within the last few months, both of us took on new roles in our careers and struggle to find the time to line up speakers and keep things running smoothly.

To that end, we would like to open up COALMG to new leadership. Alexei and I would still remain involved (as well as Brian Prince) from a "board"/guidance perspective but we want someone to really drive: schedule strong presenters, question the current setup, drive membership, sponsors, etc.

We have a great following and there's tons of potential. COALMG is a fantastic opportunity for someone with energy, a passion for great software and a desire to get involved in the community.

We look forward to hearing from you! If you're interested, shoot me an email at jeff dot hunsaker at gmail.

Thursday, June 09, 2011

TFS Error | The type initializer for 'Microsoft.TeamFoundation.Build.Server.BuildInformationNodeBinder' threw an exception.

Posting this one for the search engines. If you ever receive the exception "The type initializer for 'Microsoft.TeamFoundation.Build.Server.BuildInformationNodeBinder' threw an exception.", more than likely, your drive space is at 0 on your TFS application tier box.

I encountered this at a client recently. The root cause was that IIS logs had filled up the OS drive (C:\). I switched IIS logging to the applications drive (D:\) which cleaned up the OS drive and resolved the issue.

Detailed message:

TF53010: The following error has occurred in a Team Foundation component or extension:

Date (UTC): 6/7/2011 4:18:53 PM


Application Domain: /LM/W3SVC/8080/ROOT/tfs-1-129519118182628600

Assembly: Microsoft.TeamFoundation.Framework.Server, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727

Service Host: 7ecfbd77-b386-4d75-b038-b05474782696 (DefaultCollection)

Process Details:

Process Name: w3wp

Process Id: 3676

Thread Id: 5752

Account name: DOMAIN\SomeUser

Detailed Message: TF30065: An unhandled exception occurred.

Web Request Details

Url: [method: POST]

User Agent: Team Foundation (devenv.exe, 10.0.40219.1)

Headers: Content-Length=406&Content-Type=application%2fsoap%2bxml%3b+charset%3dutf-8&Accept-Encoding=gzip&Accept-Language=en-US&Expect=100-continue&

Path: /tfs/_tfs_resources/Build/v3.0/BuildService.asmx

Local Request: False

Host Address:

User: DOMAIN\SomeUser [authentication type: NTLM]

Exception Message: The type initializer for 'Microsoft.TeamFoundation.Build.Server.BuildInformationNodeBinder' threw an exception. (type TypeInitializationException)

Exception Stack Trace: at Microsoft.TeamFoundation.Build.Server.BuildInformationNodeBinder.Bind()

at Microsoft.TeamFoundation.Framework.Server.ObjectBinder`1.TryMoveNext()

at Microsoft.TeamFoundation.Build.Server.TeamFoundationBuildService.UpdateBuildInformation(TeamFoundationRequestContext requestContext, IList`1 changes, IdentityDescriptor requestedFor)

at Microsoft.TeamFoundation.Build.Server.BuildController.StopBuilds(TeamFoundationRequestContext requestContext, IdentityDescriptor requestedFor, BuildServiceHost serviceHost, IList`1 builds, Boolean force)

at Microsoft.TeamFoundation.Build.Server.TeamFoundationBuildService.StopBuilds(TeamFoundationRequestContext requestContext, IList`1 uris)

at Microsoft.TeamFoundation.Build.Server.BuildWebService.StopBuilds(String[] uris)

Inner Exception Details:

Exception Message: There is not enough space on the disk.

(type IOException)

Exception Stack Trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

at System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count)

at System.IO.FileStream.FlushWrite(Boolean calledFromFinalizer)

at System.IO.FileStream.Dispose(Boolean disposing)

at System.IO.Stream.Close()

at System.IO.StreamWriter.Dispose(Boolean disposing)

at System.IO.TextWriter.Dispose()

at Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources)

at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources)

at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)

at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)

at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)

at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)

at Microsoft.TeamFoundation.Build.Server.BuildSqlXmlColumnBinder`1..ctor(String columnName)

at Microsoft.TeamFoundation.Build.Server.BuildInformationNodeBinder..cctor()

Wednesday, January 12, 2011

TF221122: TFS Error While Processing Cube

If you're experiencing "Query execution failed for dataset 'ds[Whatever]'. ", more than likely, your warehouse processing is failing. Going into the Admin Console or invoking the web service directly, invoking the Start Rebuild action, I kept receiving a TF221122.

Finally, when I added the account under "Account for accessing data sources" under the "Analysis Services" tab to the SQL Server Tfs_Warehouse database TFSEXECROLE role, processing began to succeed again. Whew.

Thursday, December 09, 2010

VS/TFS 2010 All-Up VM Refresh

Brian Keller just updated the soon-to-expire (12/15) all-up Visual Studio/TFS 2010 VM. Make sure to download the latest refresh! From Brian:

What’s new in the December 2010 Refresh?
The version of this virtual machine
which was refreshed on December 9, 2010, includes the following additions:
Visual Studio 2010 Feature Pack 2
· Team Foundation Server 2010 Power Tools
(September 2010 Release)
· Visual Studio 2010 Productivity Power Tools
(these are disabled in VS so that the screenshots of the hands-on-labs still
match; you can quickly enable the Productivity Power Tools via Tools ->
Extension Manager from within Visual Studio)
· Test Scribe for Microsoft
Test Manager
· Visual Studio Scrum 1.0 Process Template
· All Windows
Updates through December 8, 2010
· Lab Management GDR (KB983578)
Visual Studio 2010 Feature Pack 2 pre-requisite hotfix (KB2403277)
Microsoft Test Manager hotfix (KB2387011)
· Minor fit-and-finish fixes based
on customer feedback
· A new expiration date of June 1, 2011

Thursday, October 14, 2010

DogFood III Conference:Engaging nondevelopers in Visual Studio 2010/TFS/ALM

I'm honored to be presenting at the DogFood Conference again this year. I'll be delivering a session entitled "Engaging nondevelopers in Visual Studio 2010/TFS/ALM" on Friday. Hope to see you there!

Update (11/03/2010): I posted my deck on SkyDrive...but you still need to attend in person! (Lots of demos...)

Wednesday, September 15, 2010

Visual Studio 2010 Microsoft Scrum Process Template on SharePoint 2010

I couldn't find specific reference to installing the Scrum template onto SharePoint 2010 so I thought I would confirm that it does indeed work. A few tips:

  1. The MSI installer does not apply the process template nor install the SharePoint feature. You need to upload the template manually and run STSADM.exe commands to deploy the TFS WSP. Follow the ReadMe.txt files in the installation directories for the template and the feature, respectively.

  2. The path in the SharePoint installation ReadMe.txt file refers to the STSADM.exe path in the "12 hive" but this switches to the "14 hive" for SharePoint 2010. Just replace the paths to ../12/.. with ../14/..

Wednesday, August 25, 2010

Lab Management in Visual Studio 2010 Released

In my experience, there's a lot of animosity and poor communication between Development and QA. It's not that they don't appreciate one another so much as they never seem to stay on the same page.

QA: "What's the status on defect #4874?"
Dev: "Done."
QA: "Done?"
Dev: "Yeah, I fixed that Tuesday."
QA: "Err, ok. Well where is it? I mean where can I verify it?"
Dev: "No clue. I committed it Tuesday. It passed unit tests and built successfully."
QA: "Alright. I'll track it down."

Invariably, QA speaks with the build manager (if there is one) to find the build in which that defect was repaired. After discovering the correct build, now QA needs an environment stood up to house that build. But wait, the UAT environment is currently testing the next release. It can't be disturbed for another week.

At this point, the QA person's blood pressure heads for unsafe levels and the browsing begins. But it doesn't have to be this way...

Lab Management in Visual Studio 2010 along with TFS solves many of these pains. Here's what the above scenario might look like with Lab Management:

QA doesn't inquire to the Dev about #4874 because it's already marked Resolved and back in QA's list of Defect Work Items. It's associated with a Continuous Integration Team Build instance which is marked with a Build Quality of Ready for UAT (meaning all unit tests passed and the build compiled successfully). Behind the scenes, as part of the build, Lab Management spun up a virtual web server, application server and database server. Team Build deployed the solution to this virtual environment and even sent an email to the build manager and the QA person (they chose to be alerted) saying this environment was ready for testing. This shop is currently testing four pending releases along with a production hotfix that's going out later today--all at the same time in completely separate environments.

Best of all, it's an amazing value. If you made/make the investment in Visual Studio 2010 Ultimate, you get Lab Management for free. Yes, that's right: free. That said, you will need some not insignificant hardware to serve as a host for these virtual servers...but you have that already, right?

Tuesday, July 06, 2010

How I Cloned my Laptop Hard Drive or Skirting the Dreaded Hard Drive Kerklunk

Recently, my laptop hard drive started emitting the dreaded, "kerklunk, rriiipppphphhhh" noise. Oh yes, you've awoken in a sweat with this nightmare, haven't you? It's a sure sign of a failed drive coming down the pike. Incoming!

Rather than suffering the life-shattering disruption of an unrecoverable drive, I called a Code Blue...and here's what I did:

Background: I have Win7 64-bit running on a Dell Latitude D830 with a bay-mounted SATA external 500GB drive and an external USB 500GB drive.
  1. Download Paragon Backup & Recovery Free Edition; install
  2. Use Paragon B&R to create a full backup of my existing hard drive (including MBR/Master Boot Record) onto my external USB drive (about 1/2 the size of my total hard drive)
  3. Use Paradon B&R to restore from the external USB drive to the external bay drive
  4. Shut down Windows7
  5. Swap primary hard drive with external bay drive
  6. Start up Windows7
  7. Order new hard drive to replace old, busted, Kerklunk drive...

Unbelievably, that's it. Everything (including Windows Activation) just worked. I will shout to the hills about the awesome-ness of Paragon's tools. Yea Paragon. Seriously. Booyah.

Saturday, June 12, 2010

Scrum for TFS Template v1.0 (Beta)

In case you missed it, Brian Harry announced Microsoft's Scrum process template this week at TechEd in New Orleans. Very exciting. Great work, Aaron and team!

Saturday, May 29, 2010

Scrum for TFS 2010 at Path to Agility

Thanks to all who attended Alexei's and my Scrum for TFS 2010 Thursday at the Path to Agility conference. Please contact us if you have follow-up questions. We posted the deck here.

Sunday, May 23, 2010

Path to Agility Conference: Speaking

I'll be leading a panel and presenting at the Path to Agility conference Thursday May 27th. The panel at 1:15PM is entitled "Attracting and Leading Agile Developers". The presentation at 3:00PM is entitled "Scrum with Team Foundation Server 2010". Hope to see you there!

Tuesday, May 18, 2010

TFS 2010: Check-in Policies and Power Tools

Recently, I had an inquiry about where the "Changeset Comments Policy" went for Check-in Policies...check the Power Tools.

Before installing Power Tools…


After installing Power Tools…


Tuesday, May 11, 2010

Visual Studio and Team Foundation Server 2010 – Starting Point

Congratulations to the Microsoft team for recently releasing the much anticipated Visual Studio and Team Foundation Server 2010. My firm is embarking on several roll-outs right off the bat so I wanted to capture some of our efforts. To start, lets just provide the basics:

TFS 2010 Installation Guide

TFS 2010 Administration Guide

Visual Studio Rangers Guidance

Visual Studio 2010 and .Net 4.0 Training Kit

Application Lifecycle Management Online Assessment

MSF for Agile Software Development 5.0 Process Guidance

Team Foundation Server Power Tools April 2010

TFS 2010 Setup | TF255437: Access is denied.

If you experience TF255437: Access is denied while installing TFS 2010 on a remote/separate data tier, likely, the setup account is not a member of the local Administrators group on that data tier machine.

Sunday, April 25, 2010

The Path to a-gil-i-ty

I'm excited to deliver a break-out session at The Path to a-gil-i-ty conference coming up May 27th. The presenter line-up looks fantastic...I'm eager to sit in on the other talks!

I'll be speaking along with Alexei Govorine on managing Scrum projects leveraging the recently released Visual Studio 2010 and Team Foundation Server 2010.

Click here for COAAH write up and registration. My firm, Cardinal Solutions is a sponsor.

End User Improvements in SharePoint 2010

Thanks to everyone who attended the Cardinal Solutions event last week when I delivered our "End User Improvements in SharePoint 2010" presentation. It was well-received and certainly fueled the excitement around empowering business users with a viable platform beyond just Office or relying on custom development.

OT: Safelite Triathlon | Results

Following up on my participation in the Safelite Triathlon to benefit MaAfrika Tikkun, I indeed finished and more importantly, raised $1000. Thank you again for your generous contributions!

Regards to the Safelite folks who organized a safe, fun and entertaining event. Held in Las Vegas, I typically think of one (or two) things: gambling. However, out by Lake Mead is gorgeous. The event utilized the lake, trails and some serious up-and-down hills through rocky terrain to deliver a challenging run, swim and bike.

Sunday, March 14, 2010

OT: Triathlon for Charity: MaAfrika Tikkun | Safelite

In April, I'll be competing in the Safelite Charity Triathlon benefiting MaAfrika Tikkun, a charity charged with reducing hunger and improving health care for children in South Africa. If you care to donate, please click on the Donate button in the right pane or visit my page at Thank you!

Next Generation Testing with Visual Studio 2010

Monday the 15th, Randy Pagels delivers "Next Generation Testing with Visual Studio 2010" in Columbus at the Polaris Microsoft offices. I'll be delivering a short segment on my firm's capabilities. Hope to see you there!

Tuesday, March 09, 2010

Agile with TFS 2010 Talk

Last Thursday, I spoke on Agile (Scrum) with TFS 2010. A lot of great conversation and questions came out. A few I wanted to follow up with:

Q. Has security administration improved with 2010?
A. Yes, fellow MVP Paul Hacker points out the new TFSAdmin 2.0 tool on CodePlex.

Q. Is anyone doing hosted TFS?
A. Yes, again see Paul Hacker's firm SaaS Made Easy.

Tuesday, February 16, 2010

TFS 2010 Upgrade from Beta2 to RC…

…went great. I followed the PDF posted here and only encountered a single issue (which I wanted to record here).

[ Reporting ] TF255275: The following Web service for SQL Server Reporting Services could not be accessed: http://win-4h5rozlea69/ReportServer/ReportService2005.asmx.


Embarrassingly, this is simply due to SSRS not started on the server. Props to my friend Jason Barile called this solution on MSDN Forums (scroll to the bottom).

Sunday, November 15, 2009

DogFoodII: VSTS 2010 | Follow-ups

Had a fantastic audience Friday for my VSTS 2010 Overview presentation at DogFoodII. Thanks for coming. I wanted to follow up on some of the questions with more complete responses.

Q. Will 2008/5 custom SSRS reports fail following the upgrade?

A. One key aspect here is “custom”. 2010 significantly changes the data warehouse schema (…which drives most reports). So, existing reports will need some work to function properly under 2010. That said, the VSTS team upgraded/updated the process templates and reports for Agile and CMMI to work properly against the 2010 schema. If you have custom reports, you’ll need to update them manually. Excellent information from Aaron Bjork here.

Q. Will 2008/5 customizations to team builds fail following the upgrade?

A. After doing some internal reading, I think this will actually work ok and upgrade successfully. The process template upgrade solution will wrap custom builds in a “legacy” MSBuild file and simply call Team Build against it. That said, you may want to leave behind some customizations and embrace the more optimal WF-style of automated builds. You may find you don’t even need that customization any longer. Finally, C# MSBuild Tasks you built custom and want to leverage in 2010 should continue to function as they did with 2008.

Q. Will 2008/5 customizations to process templates fail following the upgrade?

A. There is a process template upgrade “engine” (for lack of a better term). I think this will depend upon the extent of customization.

Aside: Internally, there was an exhaustive Beta1 to Beta2 TFS Upgrade Guide published to assist early-adopters and MVPs with the upgrade. The Rangers are taking on a similar project for the RTM. Keep an eye on the “TFS Upgrade Guide” on the Rangers page. Pramodv is heading up the team.

Q. Will Visual Studio 2005 Team Explorer work with TFS 2010?

A. Yes, as will most clients…with an upgrade/install called the General Distribution Release (GDR) Forward Compatibility Update. Great details here from the WIT team. KB article is here.

Q. Is it possible to expose my TFS repository over the Internet?

A. Yes, with 2008, this is possible via SSL. However, I would err on the side of requiring remote users to use a VPN to first connect to your internal network. At the least, if you must expose TFS on the public Internet, deploy certificates to would-be clients using AD/PKI. Older but good article here.

Q. Is there anything that would accelerate my remote development teams? Interacting with the source repository consumes lot of time for my overseas / geographically disperse teams.

A. Yes. Check out TFS Proxy Server. It synchronizes source changes across slow or remote connections. Grant Holiday provides a nice launch point here.

Q. I would like to pull quantitative developer metrics (lines of code committed, number of unit tests, reactivations, code churn, number of builds broken, average code coverage, etc.) from TFS. Is this possible?

A. I haven’t done it but yes, most of this is possible. However, I don’t recommend it. IMO, it’s too easy to misinterpret this data at an individual level (vs. a team level). Just because I have a lower number of lines of code committed or number of unit tests, doesn’t necessarily mean I’m a sub-standard developer. That said, you could easily pop open Excel 2007, point to the TFS data warehouse and/or SSAS cubes and crawl through the schema. Good starting points here and here.