Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

This section describes how to set up the Ed-Fi ODS / API v3.4 on a development machine.

The steps can be summarized as:

Table of Contents

Detail on each step follows.

titleAdditional installation options

For those interested in getting an Ed-Fi ODS / API instance up and running quickly, but do not have developer tools or experience, we recommend you consider using the Ed-Fi Tech Suite Installer or consult the Ed-Fi Exchange, which provides a number of alternatives for installing the Ed-Fi ODS / API. Options include Windows Installers (for on-premises / virtual machine targets), as well as support for deploying into public cloud platforms including Amazon Web Services,  Google Cloud, and Microsoft Azure, as well as Powershell scripts for on-premises deployment.

Step 1. Obtain an Ed-Fi Technology License

The Ed-Fi License is free and available online. If you haven't done so already, visit the licensing section for details and a link to get started.

Step 2. Install and Configure Windows Components

Ensure that the following components are installed:

  • PowerShell 5.0. PowerShell is used to initialize the development environment.
  • Microsoft Message Queue Server Core. MSMQ Server Core is used to manage asynchronous messaging for the Bulk Load API of the Ed-Fi / ODS API.
  • .NET Framework 3.5. The .NET Framework 3.5 is required for Microsoft SQL Server.
  • .NET Framework 4.8 Developer Pack. The .NET Framework 4.8 Developer Pack is required for compiling the solution.
  • .NET Core 2.2.109 SDK. The .NET Core 2.2 Software Developer Kit is required for compiling the solution.
titleView detail...

PowerShell 5.0

Verify that PowerShell 5.0 or above is installed:

  1. Press the Windows key Windows logo on your keyboard, type PowerShell, select Windows PowerShell, and press Enter.
  2. Type $PSVersionTable.PSVersion, and press Enter
  3. If the required version is not installed, download Windows Management Framework 5.0, which includes PowerShell 5.0.

Microsoft Message Queue Server Core

 Verify that MSMQ Server Core is installed:

  1. Press the Windows key Windows logo on your keyboard, type Windows Features, select Turn Windows features on or off, and press Enter.
    Alternatively, open Control Panel, click on the Programs items, and then click Turn Windows features on or off under Programs and Features.
  2. If not already selected, select the Microsoft message Queue (MSMQ) Server Core checkbox as shown below, press OK, and reboot your computer if prompted.
    Only MSMQ Server Core is required, as shown below:

.NET Framework 3.5

Verify that .NET Framework 3.5 is installed:

  1. Press the Windows key Windows logo on your keyboard, type Windows Features, select Turn Windows features on or off, and press Enter.
    Alternately, open Control Panel, click on the Programs items, and then click on Turn Windows features on or off under Programs and Features.
  2. If not already selected, select the .NET Framework 3.5 (includes .NET 2.0 and 3.0) checkbox as shown below, press OK, and reboot your computer if prompted.

Alternatively, download the .NET Framework 3.5 installer.

.NET Framework 4.8 Developer Pack

Download and install the .NET Framework 4.8 Developer Pack.


Download and install  .NET Core SDK 2.2.109 (Compatible with Visual Studio 2017).

Step 3. Install and Configure Required Software

Ensure that the following software is installed and configured:

  • Visual Studio 2017. Visual Studio 2017 version 15.9.11+ (Community, Professional or Enterprise edition) or JetBrains Rider version 2019.1+ (an alternative development environment that can be used instead of Visual Studio 2017).

  • Microsoft SQL Server 2016 or 2017. Microsoft SQL Server is used to store the data for the Ed-Fi ODS / API. Local installation of Standard, Developer, or Enterprise Editions with Service Pack 2 or higher are supported. Using a remote instance of Microsoft SQL Server is not currently supported.
  • Optional PostgreSQL datastore:
    • PostgreSQL 11.x. PostgreSQL can be used as the datastore for and Ed-Fi ODS / API instance instead of Microsoft SQL Server. However, Microsoft SQL Server developer edition or above is still required for a local build.

titleView detail...

Microsoft SQL Server 2016 or 2017

Install Microsoft SQL Server 2016:

  1. When prompted, select the following features:
  2. Use the default instance named MSSQLSERVER.
  3. Select either Windows Authentication Mode or Mixed Mode.


    Mixed Mode may be preferred if you also intend to install the Ed-Fi Dashboards. Mixed Mode can be enabled later by following the Change Server Authentication Mode instructions.

  4. In Specify SQL Server administrator, click Add Current User.

Install SQL Server Management Studio:

Visual Studio 2017 

Visual Studio 2017 (Community edition or higher) is required for a development environment.

Installing Visual Studio 2017


The instructions below are based on the Visual Studio 2017 Community Installer. 

1. Launch the installer and select the following features:

  • In the Workloads Tab
    • .NET Desktop development, and select the following components:
      • .NET Framework 4.8 development tools
      • .NET Framework 4.7 development tools
      • .NET Framework 4.7.1 development tools
    • ASP.NET and web development
  • In the Individual Components Tab
    • .NET Framework 4.8 SDK
    • .NET Framework 4.8 targeting pack

2. Restart your computer (if prompted)

3. Open Developer Command Prompt for VS2017, at the command prompt type gacutil -l envdte to verify EnvDTE is registered in GAC. If no listings are found, run the following command to add EnvDTE to GAC.

gacutil -i "%COMMONPROGRAMFILES(x86)%\microsoft shared\MSEnv\PublicAssemblies\envdte.dll"


After installing, check the Visual Studio Start Page and Windows Update for Visual Studio updates.

PostgreSQL Installation (Optional)

Install PostgreSQL 11.x on port 5432 if you intend to use PostgreSQL as a backing datastore for the ODS / API. Note that SQL Server (Developer Edition at minimum) is currently still required for the local build process.

PostgreSQL Visualization Tool

Unlike SQL Server, PostgreSQL does not include a GUI to visualize the database (commands are executed via the command line using psql). Below is a list of various tools that work:

Install PostgreSQL

Installation of PostgreSQL can be done either using the binaries or using Docker. The recommended solution is to to use the docker install using Linux containers.

Option 1. Installation using PostgreSQL Installer

titleInstallation using PostgreSQL Installer

Download the version 11.x installer.

Click Next.

Click Next.

If you want to install only the tools uncheck PostgreSQL Server, pgAdmin 4 and Stack Builder

Click Next.

Click Next.

Enter a password for the postgres superuser.

Click Next.

Enter port 5432 (default).

Click Next.

Click Next.

Click Next.

Click Next to finish the installation.

Option 2. PostgreSQL Installation with Docker

titleInstallation with Docker

Initial setup with Docker:

  • Install Docker using this guide.
  • Create a Docker Compose file.

Run PostgreSQL with Docker in Linux Containers

Create a Docker Compose file (name: docker-compose.yml) to bootstrap PostgreSQL using Linux containers. More information on the Docker Compose file can be found on the Docker documentation site

Code Block
version: '3.7'

        image: postgres:11-alpine
        container_name: pg11
            - pg11-database:/var/lib/postgresql/data
            - 5432:5432
        restart: on-failure

        driver: local
        name: pg11-database

Create an environment file (name: .env) to be consumed by Docker Compose. By default the environment file needs to be in the same folder as the Docker Compose file.

Code Block

Sample files for these can be downloaded from the download panel on the right.

Data Retention and Docker Compose

Once you have set up your docker-compose.yml and .env files and placed them in a folder (e.g. C:\PGDockerSetup), navigate to that folder in PowerShell and run docker-compose. This utility reads the docker-compose.yml configuration file and runs all of the containers described in that file. 

To bring up the environment: 

Code Block
C:\PGDockerSetup>docker-compose up -d

To stop the volumes and containers:

Code Block
C:\PGDockerSetup>docker-compose down

To stop the services and remove them, but retain the data in separate volumes:

Code Block
C:\PGDockerSetup>docker-compose down -v

Configure pgpass.conf

Create a pgpass.conf file. Note that the password should be your postgres superuser password and it should match the password in your environment file.

Code Block

Set the environment variable PGPASSFILE to the location of the pgpass file that was created, which is the recommended approach. Optionally, the file can be saved in %APPDATA%/postgresql/pgpass.conf.

You can test the environment variable setup using:  

Code Block
C:\> get-item env:pgpassfile

Name                           Value
----                           -----
PGPASSFILE                     C:\PGDockerSetup\pgpass.conf

Step 4. Download the Ed-Fi ODS / API v3.4 Code

Before you begin this step, make sure you have a license and a login to access the Ed-Fi Alliance source code repository in GitHub. The Ed-Fi ODS / API source code is contained in three Ed-Fi repositories hosted by GitHub

The Ed-Fi ODS / API can be found in the repository links below:

Use a Git client (such as GitHub Desktop) or a Git command line tool to Git Clone each of the repository links described above. It is important that all three repositories are extracted to the same root directory (for example C:\). When all repositories have been cloned, there will be three folders for the ODS / API source code as shown below:


When you clone a repository, ensure that you have the correct tag or branch checked out in your client before you proceed.


If you download the code via a ZIP file, ensure that you check Unblock in the file's Properties dialog to allow the contents of the contained scripts to execute properly.

titleView detail and options...

Accessing Daily Source

The links above are for the stable release of the ODS / API v3.4. You can download the links to the very latest daily source code in the development branch:

Alternate Method for Code Download

Some developers prefer simply to download the code rather than perform a Git Clone. You can do so by following these instructions:

  1. Navigate to each of the repository links described above (for latest release or daily source) and use the Download ZIP button to download the repository to your local drive.

  2. In Windows Explorer, right-click on each of the downloaded ZIP files and select Extract All… Enter C:\ for the target folder. (You can extract the files to any directory, but these instructions assume you've extracted to C:\.) The ZIP files contain an embedded folder ending in "-v3.4.0" (or "-development-v3" if downloading latest daily source). For example, the "Ed-Fi ODS ZIP" archive contents will be extracted into C:\Ed-Fi-ODS-v3.4.0.

  3. After the extractions are complete, rename the folders to remove the -v3.4.0 (or "-development") from the folder names. For example, change C:\Ed-Fi-ODS-v3.4.0 to C:\Ed-Fi-ODS. 

  4. When the extraction and renaming are complete, there should be three folders for the ODS / API source code as shown below:

Troubleshooting the File Extract

The steps above work for most users. However, depending on your Windows security settings, you might get a warning or error when attempting to extract the downloaded ZIP files. If this happens to you, the fix is easy:

In Windows Explorer, right-click each of the downloaded ZIP files and select Properties. On the General tab, check Unblock to allow the contents of the contained scripts to execute properly.

The dialog box above is from Windows 10. Previous versions of Windows have an "Unblock" button in the same location.

Step 5. Prepare the Development Environment

To prepare the development environment, you'll need to follow the procedures described below.

Configure MSBuild

Packages compiled from some of the projects are used during the code generation of later projects, and there is a potential for earlier packages to be locked if the solution is recompiled in rapid succession. This is due to the way that MSBuild caches build processes by default to minimize compile time. Build processes are normally held for reuse for approximately 10 minutes. To turn off this default behavior when compiling in Visual Studio, the "MSBuildDisableNodeReuse" variable must be set.

To set the "MSBuildDisableNodeReuse" variable globally:

  1. Press the Windows keyWindows logo on your keyboard, type Environment Variables, select Edit the system environment variables, and press Enter. This brings up System Properties. Under Advanced, select Environment Variables. (Alternatively, right-click the Start MenuWindows logo, select System, and click on the Advanced system settings. Under Advanced, select Environment Variables.)
  2. Under User variables, select New...
  3. For Variable name, enter MSBuildDisableNodeReuse
  4. For Variable value, enter 1, and press OK.

To turn off this behavior when compiling the solution using MSBuild, include the following compiler flag: /nr:false

Verify PowerShell Script Permissions

When opening PowerShell, ensure that Run as Administrator is selected. You may need to change the execution policy for unsigned PowerShell scripts to run on your machine to run the scripts. This can be done by opening a PowerShell console and typing the following command:

Code Block
Set-ExecutionPolicy Unrestricted

Initialize PowerShell Scripts for Development

There are several databases that must be successfully deployed. PowerShell scripts that initialize all necessary development databases are included in the Visual Studio solution. These scripts are enabled for use within Visual Studio when the Ed-Fi-ODS solution is opened. They may also be loaded for use within a PowerShell console window by running the initialize PowerShell for development script located at:

Code Block

When the scripts are loaded, you should see the results shown below:

Initialize the Development Environment

Once the PowerShell scripts for development have been loaded and a development certificate has been installed, the development environment may be initialized by navigating to the Ed-Fi-ODS-Implementation folder.

For a SQL Server backing datastore, type the following into a PowerShell command prompt:

Code Block

For a PostgreSQL, backing datastore, use the following:

Code Block
initdev -Engine PostgreSQL

This command creates databases, generates code templates, and compiles projects in the solution. Some considerations while running the script:

  • The initdev script may not finish with a command prompt when it is automatically loaded with the solution in Visual Studio in some circumstances. Simply press Enter, and ignore any messages that appear in the console window.
  • Initializing the development environment will take several minutes to complete. Some developers report encountering an error during the initialization process the first time it is run. This is due to an intermittent timing issue. The issue generally resolves itself when the initdev process is run a second time.

A successful initdev execution will display the tasks executed and their duration as shown below:


Another Option for Setting MSBuildDisableNodeReuse

The most convenient method for developers is to set the MSBuildDisableNodeReuse variable globally. However, you can also set the variable per command prompt session. Both options instruct the compiler to create a new process for each build job. As a side effect, this action also releases any resources that may be held by inactive compiler processes.

If these settings are not applied, Visual Studio or MSBuild may lock resources during build. Restarting Visual Studio (or the command prompt session) will resolve the problem for the first build after the restart. Waiting for up to 15 minutes between builds will also achieve this.

Set "MSBuildDisableNodeReuse" per Command Prompt Session

If the "MSBuildDisableNodeReuse" variable is set within a command prompt session, the Visual Studio development environment must be launched using the devenv command (rather than from an icon):

Code Block

Step 6. Build the Visual Studio Solution

To build the solution from within Visual Studio:

  1. Ensure that the MsBuildDisableNodeReuse flag is set (see Configure MSBuild, above).
  2. If the above flag has been set globally, start Visual Studio normally. Otherwise, open Visual Studio from the Visual Studio Developer Command Prompt (where you set the flag value by typing devenv).
  3. Within Visual Studio, open the "Ed-Fi-Ods.sln" solution file from the C:\Ed-Fi-ODS-Implementation\Application directory.
  4. Select Build > Build Solution (or press Ctrl+Shift+B).
titleView detail and options...

Code Generation During Build

The following diagram shows how the XML schema and empty ODS Database are used to create the API for the Ed-Fi ODS using code generators within the solution. The presence of the "EdFi_Ods_Empty" database is necessary because the code generation uses the database to understand the structure that it uses to generate data access code.

Alternatively Building from the Developer Command Prompt

When the “EdFi_Ods_Empty” database has been created (by running the initdev PowerShell command in the previous step), there are two ways to build the solution. The solution can be built from Visual Studio, as described above, or from a Developer Command Prompt for Visual Studio using the Windows start menu.

To do a clean build from the command prompt:

  1. Open the Developer Command Prompt for Visual Studio.
  2. Navigate to your C:\Ed-Fi-ODS-Implementation\Application directory.
  3. Issue a command similar to the following:
Code Block
Msbuild /nr:false /t:clean;build Ed-Fi-Ods.sln

Step 7. Set Startup Options

There are three startup configurations to make before you run the solution:

  • Set the Startup Projects

  • Set the Start Options for EdFi.Ods.WebApi
  • Set Up a Sandbox Database and Permissions for PostgreSQL (optional)

Each is described in more detail below.

Set the Startup Projects

The Visual Studio Solution for the Ed-Fi ODS / API consists of several "Startup Projects" that work together. Each of these projects needs to be running for the system to be fully functional.

To set the Startup Projects:

  1. Select the Set StartUp Projects… context menu by right-clicking on the solution file in the Solution Explorer.

  2. Within the Startup Project property page, select the Multiple startup projects radio button and enable the following projects:
    • EdFi.Ods.SandboxAdmin.Web (SQL Server only)
    • EdFi.Ods.SwaggerUI
    • EdFi.Ods.WebApi

The Upload and Bulk workers work in conjunction with the bulk load API. They monitor message queues containing instructions to asynchronously reassemble the uploaded file segments and process the assembled bulk data. If you will be performing bulk operations, you may choose to set the startup project action to Start for the following projects: 

    • EdFi.Ods.BulkLoad.Services.Windows.BulkWorker (SQL Server only)
    • EdFi.Ods.BulkLoad.Services.Windows.UploadWorker (SQL Server only)

Alternatively, you can start these projects on demand after loading the files.

3. Click OK to accept the changes to your local development settings.

Set the Start Options for EdFi.Ods.WebApi

  1. Select the Properties context menu by right-clicking on the EdFi.Ods.WebApi project in Solution Explorer.

  2. Within the Project Properties page, go to the Web tab and change the Start Action to Don't open a page. Wait for a request from an external application.

Set Up a Sandbox Database and Permissions for PostgreSQL (optional)

IN the current release, the Sandbox Admin tool does not support deployments that use PostgreSQL as the backing data store for the ODS. Therefore, if you have selected to use PostgreSQL as the backing datastore, you will need to perform some additional manual steps to enable you to explore the ODS/APi using Swagger. The instructions are as follows:

  1. Create a populated ODS database that can be queried by Swagger:
    1. Create database backup of "EdFi_Ods_Populated_Template_Test" database
    2. Delete the database called "Ed_Ods", and recreate it as an empty database
    3. Restore the backup from step a above into the empty database
  2. Create a test key/secret 
    1. Download the PostGreSQL script from How To: Configure Key / Secret
    2. Execute this script in the "EdFi_Admin Database"

After performing these steps you will have a sample ODS database that you can connect to using Swagger in the next step.

Step 8. Run the Solution

The projects in the Ed-Fi-ODS-Implementation repository are configured to run the desktop version of Internet Information Server (i.e., IIS Express). This server is installed with Visual Studio and facilitates easy debugging with minimal configuration. After the startup projects are set, you are ready to run or debug the Ed-Fi ODS / API.

Running with a SQL Server Backing Datastore

  • To run the Ed-Fi ODS / API without debugging, press Ctrl+F5.
  • To interactively debug the Ed-Fi ODS / API solution, press F5 (or press Start in the Standard Toolbar).

Running with a PostgresSQL Backing Datastore

  • Set build configuration to Npgsql.
  • To run the Ed-Fi ODS / API without debugging, press Ctrl+F5.
  • To interactively debug the Ed-Fi ODS / API solution, press F5 (or press Start in the Standard Toolbar).

Notes on Running the Solution

  • The first time you build the solution, you may get a build error related to the Ed-Fi-Common project. If this occurs, simply building the solution again will generally result in a successful build.
  • The solution builds and starts each of the projects that were added to the startup projects list. Each web application starts an instance of IIS Express. By default, the websites are configured according to the following table:







Sandbox Administration (SQL Server only)



Ed-Fi ODS API Documentation



  • At this point, you're ready to explore the system.
titleView detail about the applications...

Follow these steps to finish configuring the solution:

  1. Visiting the API Sandbox Administration Portal (SQL Server only) and logging in with the Test User Account
  2. Reviewing the Ed-Fi ODS API Documentation

The Sandbox Administration Portal (SQL Server Only)

The Sandbox Administration Portal is a web application used to create sandbox databases containing data that can be accessed through the Ed-Fi ODS / API.

Login to Sandbox Administration Portal with Test Admin Account. Login details can be found in Ed-Fi-ODS-Implementation\Application\EdFi.Ods.SandboxAdmin.Web\AdminCredential.config file. We recommend that you change your password as soon as you log in.

As the name implies, Sandbox Administration Portal is useful for development machines and sandbox instances of the ODS / API, but should not be present on production instances. See the Platform Developers' Guide - Deployment section for details.

The Ed-Fi ODS / API Documentation Web Page

The ODS / API Documentation Web Page provides an overview of the ODS / API, and links to more detailed API documentation.

The REST interface to the Ed-Fi ODS / API exposes metadata describing the exposed resources as well as the inputs, HTTP verbs, and schema of the exposed entities. This metadata enables a user interface (based on the Swagger framework) to display API documentation.

The Swagger-based documentation web page uses a key and secret (typically the same one used for the Sandbox Administration Portal) to access the data that has been placed in the corresponding sandbox.

To view the data in your sandbox, click Authorize and enter the key and secret in the appropriate fields and retrieve a token (the key and secret values for the default sandbox are pre-populated). This token is used throughout your session to access your sandbox. This is the same process used by other applications to access their data.

Similar to the Sandbox Administration Portal, the ODS / API Documentation Web Page is useful for development machines and sandbox instances of the ODS / API, but is generally not present on production instances. See the Platform Developers' Guide - Deployment section for details.

Include Page
_Sidebar - Getting Started
_Sidebar - Getting Started


The following link contains sample docker setup files for PostgeSQL