In addition to @palacsint's advice, namely you should make the implicit dependencies of system under test explicit, I'll add a few more. 

 - In my experience easiest way to make a business method that uses system time testable is to **just pass the current time as a parameter**. "Time" is not part of your domain after all. 
This refactoring is a form of [Replace Static Variable with Parameter][1] This will also save you the trouble of setting up a mock time provider service for test scenarios. 


 -  The following means `org.RelatedOrganizationUnit` is some kind of collection
            
        if (org.RelatedOrganizationUnit != null)
        {
           foreach (... in org.RelatedOrganizationUnit)

  Make it default to an empty list, and you would not need to check for nulls. Less `if`s, less test cases needed.

 - Factor out the repeating chunks about related organizations and `EducationIndicator` out smaller units are easier to test. 

 -  Duplication is bad in itself. The following two snippets look like they were copy/pasted; then an error was fixed, for just one copy.

        // this should throw NullReferenceException if org.UserArea is null
        if (!org.UserArea.Equals(null)) 

        if (org.UserArea != null)

I'll add a few more points when I've time...


  [1]: http://www.refactoring.com/catalog/replaceStaticVariableWithParameter.html