Set up your own OData service
Get your own OData service up and running.
Overview
You will learn
- How CAP can effortlessly provide OData services
Prerequisites
Steps
Intro
In order to take you through various OData concepts in the OData Deep Dive mission, we’ll need an OData service. Running your own instance of the OData service upon which subsequent tutorials in this mission are based means that you can explore & try out more than read-only concepts. The OData service is deliberately simple and is called Northbreeze, because it’s based upon, and a cut down version, of the original Northwind service.
The service is provided by a CAP server, and the definition is in a publicly available repository, along with the definition of a container image.
This tutorial belongs to the OData Deep Dive mission, a re-write of the original. The re-write is a work in progess, please proceed with caution! More info can be found in the blog post OData Deep Dive rewrite in the open.
You will need:
- A Docker engine (in the form of Docker Desktop, Podman, or similar)
This tutorial is to receive further updates to include:
- Making multi-arch images available
- Running as a dev container in VS Code and GitHub Codespaces
- Running in an SAP Business Application Studio dev space
In the meantime, you can simply clone the repository that has the source for the container image and the CAP-based OData service and run it yourself, locally.
The OData service is deliberately simple and contains a small handful of entities in the domain model, and a single service made available via the OData V4 protocol.
Head to https://github.com/SAP-samples/odata-dd-server and take a look around, especially in the CAP project directory northbreeze.
Use the docker command line tool to pull the image which contains the Northbreeze CAP server, and run a container based upon it:
docker run \
--rm \
--tty \
--publish 4004:4004 \
ghcr.io/sap-samples/oddThis should first emit docker output:
Unable to find image 'ghcr.io/sap-samples/odd:latest' locally
latest: Pulling from sap-samples/odd
c74c1b58c0fe: Pull complete
599d5b6b6766: Extracting [===>] ...
c9b629762372: ...
Digest: sha256:c2678197eb57da768edee4184901be3fa96d4c894a3396d09a2e5e36a1c91c42
Status: Downloaded newer image for ghcr.io/sap-samples/odd:latestThen the CAP server output should appear:
cds serve all --with-mocks --in-memory?
( live reload enabled for browsers )
___________________________
[cds] - loaded model from 2 file(s):
northbreeze/srv/main.cds
northbreeze/db/schema.cds
[cds] - using bindings from: { registry: '~/.cds-services.json' }
[cds] - connect to db > sqlite { database: ':memory:' }
> init from northbreeze/db/data/northbreeze-Suppliers.csv
> init from northbreeze/db/data/northbreeze-Products.csv
> init from northbreeze/db/data/northbreeze-Categories.csv
/> successfully deployed to in-memory database.
[cds] - using auth strategy { kind: 'mocked' }
[cds] - serving Main {
at: [ '/northbreeze' ],
decl: 'northbreeze/srv/main.cds:4'
}
[cds] - server listening on { url: 'http://localhost:4004' }
[cds] - server v9.7.0 launched in 260 ms
[cds] - [ terminate with ^C ]At this point, visit http://localhost:4004, where the default start page will be displayed:

Links to the Northbreeze OData service document, metadata document, and entitysets for the three available entities are shown.
In case you haven’t yet got round to running your own instance of the Northbreeze service, there’s a publicly available instance that is fully read-only. So you can try out any of the read-only activities in subsequent tutorials in this mission (for other activities you will have to set up and run your own, as described in this tutorial).
Head over to https://odd.cfapps.eu10.hana.ondemand.com/ (“odd” is short for “OData Deep Dive”) to see the start page, and take a look around.
- Capire - the official CAP documentation
Resources
Discussion
Share feedback on this tutorial or join the conversation in SAP Community.