Welcome to IoTDM


The IoT Data Management (IoTDM) project is an open source implementation of oneM2M running on OpenDayLight. It is about developing a data-centric middleware that will act as a oneM2M compliant IoT Data Broker and enable authorized applications to retrieve IoT data uploaded by any device.

Project Proposal

Git patches and reviews


Project Facts

Project Creation Date: December 9th, 2014
Lifecycle State: Lithium Release
Primary Contact: Lionel Florit (lflorit@cisco.com), John Burns (johnburn@cisco.com)
Project Lead:  John Burns (johnburn@cisco.com)

feel free to join our slack: https://join-iotdm.herokuapp.com/

Mailing List:  iotdm-dev@lists.opendaylight.org
    Archives: mailing list archives
Meetings: See Community Meetings 
Repository: git clone https://git.opendaylight.org/gerrit/iotdm
Jenkins: jenkins silo
Gerrit Patches: code patches/reviews


Getting started for users

  • There are several ways to use IoTDM. You may want to just send CRUD to it, you may want to install it locally and CRUD to it, or you may want to access the code and develop modules for it.
  • If you just want to exercise the APIs and don't want to touch the code, then follow the following procedure:
  • 1. create a local directory and download the tar file distribution from tar.gz file here or zip file zip file here
  • 2. rename your file to “onem2mall-karaf-1.0.0-SNAPSHOT.tar.gz” or “onem2mall-karaf-1.0.0-SNAPSHOT.zip” (if you download a zip file)
  • 3. cd to that directory and type
tar –xvf onem2mall-karaf-1.0.0-SNAPSHOT.tar.gz     


unzip onem2mall-karaf-1.0.0-SNAPSHOT.zip    

(if you download a zip file)

  • 4 cd into onem2mall-karaf-1.0.0-SNAPSHOT/bin
cd onem2mall-karaf-1.0.0-SNAPSHOT/bin
  • 5. Launch IoTDM
  • 6. Prompt changes to opendaylight-user@root>
  • 7. Wait for the karaf features to load
  • 8. Verify oneM2M modules are "active"
opendaylight-user@root>list | grep onem2m

256 | Active | 80 | 0.0.1.SNAPSHOT | onem2m-api

257 | Active | 80 | 0.0.1.SNAPSHOT | onem2m-core

259 | Active | 80 | 0.0.1.SNAPSHOT | onem2m-notifier

261 | Active | 80 | 0.0.1.SNAPSHOT | onem2m-protocol-coap

262 | Active | 80 | 0.0.1.SNAPSHOT | onem2m-protocol-http

  • 9. IoTDM is now running on port 8181 and 8282
  • 10. Initialize the resource tree (if prompted for a username/password type admin/admin).
  • Send a POST to :



Content-Type     application/json
Accept		    application/json
Authorization      Basic YWRtaW46YWRtaW4=             

Authorization is used for (user:admin, password:admin)


{    "input": {
       "onem2m-primitive": [
               "name": "CSE_ID",
               "value": "InCSE1"
               "name": "CSE_TYPE",
               "value": "IN-CSE"
  • This will create a tree called ODL-oneM2M-Cse. You are ready to exercise the CRUDs. See API examples here

A more convenient tool is Postman, we create a collection for you to try iotdm, just click the link and import the collection. https://www.getpostman.com/collections/ff0b20ed5f4d574f6fb5

Video tutorial: https://www.youtube.com/watch?v=FXjkJgw01Yo

Information for developers

  • If you are unfamiliar with OpenDaylight development see the core tutorials project.
  • Make sure your development environment is setup:
  • Getting the iotdm code from the repository:
git clone https://git.opendaylight.org/gerrit/p/iotdm.git
cd iotdm
git checkout stable/beryllium
  • Build the code:
mvn clean install -DskipTests
  • To bring up the iotdm onem2m features in karaf, if you have a successful build,
cd onem2mall/karaf/target/assembly/bin
  • The system is ready for CRUD operations via CoAP (Port 5683) or HTTP (Port 8282).

Externally Consumable APIs

  • IOTDM OneM2M feature
    • We do our best to implement IoTDM as closely to the oneM2M spec as possible. Keep in mind that the specification is still evolving. Detailed information about what is supported from the oneM2M is available here for the Boron release (Aug 2016).
    • RESTconf is also supported but it is a non-oneM2M standard method for accessing the tree.
    • Bundles providing the API: odl-iotdm-onem2m
    • REST API commands include:
      • onem2m-request-primitive for CRUDN
    • Examples of CRUDN calls and JSON formats are available here

Plugins Overview

It is possible to extend the functionality of IoTDM with the addition of ODL's plugin architecture. See the following got an introduction to adding IOTDM plugin's. Video Tutorial: https://www.youtube.com/channel/UCQFkSjC4Ed7GzuJH51QR5eg

Client API






Release Planning

ReleaseRelease PlanRelease NotesRelease ReviewInstallation GuideUser GuideDeveloper GuideOperations GuideHow-To's/Tutorials
LithiumRelease PlanRelease NotesRelease Review-User GuideDeveloper Guide--
BerylliumRelease PlanRelease NotesRelease Review-----
BoronRelease PlanRelease NotesRelease Review-----
CarbonRelease PlanRelease NotesRelease Review-----

If you'd like to attend our weekly calls, please send an email to lflorit@cisco.com

Some information below are deprecated. IoTDM sources includes some readme files with more actual documentation.

Architecture Overview


Release Notes

Report Bugs & Discussion

Join our Slack : https://join-iotdm.herokuapp.com/

Postman Collection

Automatic Create a resource tree. https://www.getpostman.com/collections/ed66e63ce1bdca37a568 Video Link:

  • No labels