diff --git a/docs/reference/api/Makefile.am b/docs/reference/api/Makefile.am
index de101c23..60796875 100644
--- a/docs/reference/api/Makefile.am
+++ b/docs/reference/api/Makefile.am
@@ -73,6 +73,7 @@ expand_content_files = \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
+ $(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Oma.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
diff --git a/docs/reference/api/ModemManager-dbus-reference.xml b/docs/reference/api/ModemManager-dbus-reference.xml
index d36ac417..fb15f98c 100644
--- a/docs/reference/api/ModemManager-dbus-reference.xml
+++ b/docs/reference/api/ModemManager-dbus-reference.xml
@@ -137,6 +137,7 @@
+
diff --git a/docs/reference/api/ModemManager-sections.txt b/docs/reference/api/ModemManager-sections.txt
index f2d0ded7..36d7b018 100644
--- a/docs/reference/api/ModemManager-sections.txt
+++ b/docs/reference/api/ModemManager-sections.txt
@@ -33,6 +33,10 @@ MMModemStateFailedReason
MMModemStateChangeReason
MMModemPowerState
MMModemPortType
+MMOmaFeature
+MMOmaSessionState
+MMOmaSessionStateFailedReason
+MMOmaSessionType
MMSmsPduType
MMSmsState
MMSmsDeliveryState
diff --git a/docs/reference/libmm-glib/libmm-glib-docs.xml b/docs/reference/libmm-glib/libmm-glib-docs.xml
index e91438de..53dc7f8e 100644
--- a/docs/reference/libmm-glib/libmm-glib-docs.xml
+++ b/docs/reference/libmm-glib/libmm-glib-docs.xml
@@ -184,6 +184,10 @@
+
+
+
+
diff --git a/docs/reference/libmm-glib/libmm-glib-sections.txt b/docs/reference/libmm-glib/libmm-glib-sections.txt
index 5300e651..67e2e517 100644
--- a/docs/reference/libmm-glib/libmm-glib-sections.txt
+++ b/docs/reference/libmm-glib/libmm-glib-sections.txt
@@ -2089,6 +2089,89 @@ MmGdbusModemFirmwareSkeletonPrivate
mm_gdbus_modem_firmware_skeleton_get_type
+
+MmGdbusModemOma
+MmGdbusModemOma
+MmGdbusModemOma
+MmGdbusModemOmaIface
+
+
+mm_gdbus_modem_oma_call_accept_network_initiated_session
+mm_gdbus_modem_oma_call_accept_network_initiated_session_finish
+mm_gdbus_modem_oma_call_accept_network_initiated_session_sync
+mm_gdbus_modem_oma_call_cancel_session
+mm_gdbus_modem_oma_call_cancel_session_finish
+mm_gdbus_modem_oma_call_cancel_session_sync
+mm_gdbus_modem_oma_call_setup
+mm_gdbus_modem_oma_call_setup_finish
+mm_gdbus_modem_oma_call_setup_sync
+mm_gdbus_modem_oma_call_start_client_initiated_session
+mm_gdbus_modem_oma_call_start_client_initiated_session_finish
+mm_gdbus_modem_oma_call_start_client_initiated_session_sync
+mm_gdbus_modem_oma_get_session_state
+mm_gdbus_modem_oma_get_session_type
+mm_gdbus_modem_oma_get_pending_network_initiated_sessions
+mm_gdbus_modem_oma_dup_pending_network_initiated_sessions
+
+mm_gdbus_modem_oma_set_pending_network_initiated_sessions
+mm_gdbus_modem_oma_set_session_state
+mm_gdbus_modem_oma_set_session_type
+mm_gdbus_modem_oma_emit_session_state_changed
+mm_gdbus_modem_oma_complete_accept_network_initiated_session
+mm_gdbus_modem_oma_complete_cancel_session
+mm_gdbus_modem_oma_complete_setup
+mm_gdbus_modem_oma_complete_start_client_initiated_session
+mm_gdbus_modem_oma_interface_info
+mm_gdbus_modem_oma_override_properties
+
+MM_GDBUS_IS_MODEM_OMA
+MM_GDBUS_MODEM_OMA
+MM_GDBUS_MODEM_OMA_GET_IFACE
+MM_GDBUS_TYPE_MODEM_OMA
+mm_gdbus_modem_oma_get_type
+
+
+
+MmGdbusModemOmaProxy
+MmGdbusModemOmaProxy
+MmGdbusModemOmaProxy
+
+mm_gdbus_modem_oma_proxy_new
+mm_gdbus_modem_oma_proxy_new_finish
+mm_gdbus_modem_oma_proxy_new_for_bus
+mm_gdbus_modem_oma_proxy_new_for_bus_finish
+mm_gdbus_modem_oma_proxy_new_for_bus_sync
+mm_gdbus_modem_oma_proxy_new_sync
+
+MmGdbusModemOmaProxyClass
+MM_GDBUS_IS_MODEM_OMA_PROXY
+MM_GDBUS_IS_MODEM_OMA_PROXY_CLASS
+MM_GDBUS_MODEM_OMA_PROXY
+MM_GDBUS_MODEM_OMA_PROXY_CLASS
+MM_GDBUS_MODEM_OMA_PROXY_GET_CLASS
+MM_GDBUS_TYPE_MODEM_OMA_PROXY
+MmGdbusModemOmaProxyPrivate
+mm_gdbus_modem_oma_proxy_get_type
+
+
+
+MmGdbusModemOmaSkeleton
+MmGdbusModemOmaSkeleton
+MmGdbusModemOmaSkeleton
+
+mm_gdbus_modem_oma_skeleton_new
+
+MmGdbusModemOmaSkeletonClass
+MM_GDBUS_IS_MODEM_OMA_SKELETON
+MM_GDBUS_IS_MODEM_OMA_SKELETON_CLASS
+MM_GDBUS_MODEM_OMA_SKELETON
+MM_GDBUS_MODEM_OMA_SKELETON_CLASS
+MM_GDBUS_MODEM_OMA_SKELETON_GET_CLASS
+MM_GDBUS_TYPE_MODEM_OMA_SKELETON
+MmGdbusModemOmaSkeletonPrivate
+mm_gdbus_modem_oma_skeleton_get_type
+
+
MmGdbusModemSimple
MmGdbusModemSimple
@@ -2261,6 +2344,8 @@ mm_gdbus_object_peek_modem_time
mm_gdbus_object_get_modem_time
mm_gdbus_object_peek_modem_firmware
mm_gdbus_object_get_modem_firmware
+mm_gdbus_object_peek_modem_oma
+mm_gdbus_object_get_modem_oma
mm_gdbus_object_peek_modem_simple
mm_gdbus_object_get_modem_simple
mm_gdbus_object_peek_modem_signal
@@ -2305,6 +2390,7 @@ mm_gdbus_object_skeleton_set_modem3gpp
mm_gdbus_object_skeleton_set_modem3gpp_ussd
mm_gdbus_object_skeleton_set_modem_cdma
mm_gdbus_object_skeleton_set_modem_firmware
+mm_gdbus_object_skeleton_set_modem_oma
mm_gdbus_object_skeleton_set_modem_location
mm_gdbus_object_skeleton_set_modem_messaging
mm_gdbus_object_skeleton_set_modem_simple
diff --git a/include/ModemManager-enums.h b/include/ModemManager-enums.h
index f90b223b..8fb0b088 100644
--- a/include/ModemManager-enums.h
+++ b/include/ModemManager-enums.h
@@ -801,4 +801,96 @@ typedef enum { /*< underscore_name=mm_firmware_image_type >*/
MM_FIRMWARE_IMAGE_TYPE_GOBI = 2,
} MMFirmwareImageType;
+/**
+ * MMOmaFeature:
+ * @MM_OMA_FEATURE_NONE: None.
+ * @MM_OMA_FEATURE_DEVICE_PROVISIONING: Device provisioning service.
+ * @MM_OMA_FEATURE_PRL_UPDATE: PRL update service.
+ * @MM_OMA_FEATURE_HANDS_FREE_ACTIVATION: Hands free activation service.
+ *
+ * Features that can be enabled or disabled in the OMA device management support.
+ */
+typedef enum { /*< underscore_name=mm_oma_feature >*/
+ MM_OMA_FEATURE_NONE = 0,
+ MM_OMA_FEATURE_DEVICE_PROVISIONING = 1 << 0,
+ MM_OMA_FEATURE_PRL_UPDATE = 1 << 1,
+ MM_OMA_FEATURE_HANDS_FREE_ACTIVATION = 1 << 2,
+} MMOmaFeature;
+
+/**
+ * MMOmaSessionType:
+ * @MM_OMA_SESSION_TYPE_UNKNOWN: Unknown session type.
+ * @MM_OMA_SESSION_TYPE_CLIENT_INITIATED_DEVICE_CONFIGURE: Client-initiated device configure.
+ * @MM_OMA_SESSION_TYPE_CLIENT_INITIATED_PRL_UPDATE: Client-initiated PRL update.
+ * @MM_OMA_SESSION_TYPE_CLIENT_INITIATED_HANDS_FREE_ACTIVATION: Client-initiated hands free activation.
+ * @MM_OMA_SESSION_TYPE_NETWORK_INITIATED_DEVICE_CONFIGURE: Network-initiated device configure.
+ * @MM_OMA_SESSION_TYPE_NETWORK_INITIATED_PRL_UPDATE: Network-initiated PRL update.
+ * @MM_OMA_SESSION_TYPE_DEVICE_INITIATED_PRL_UPDATE: Device-initiated PRL update.
+ * @MM_OMA_SESSION_TYPE_DEVICE_INITIATED_HANDS_FREE_ACTIVATION: Device-initiated hands free activation.
+ *
+ * Type of OMA device management session.
+ */
+typedef enum { /*< underscore_name=mm_oma_session_type >*/
+ MM_OMA_SESSION_TYPE_UNKNOWN = 0,
+ MM_OMA_SESSION_TYPE_CLIENT_INITIATED_DEVICE_CONFIGURE = 10,
+ MM_OMA_SESSION_TYPE_CLIENT_INITIATED_PRL_UPDATE = 11,
+ MM_OMA_SESSION_TYPE_CLIENT_INITIATED_HANDS_FREE_ACTIVATION = 12,
+ MM_OMA_SESSION_TYPE_NETWORK_INITIATED_DEVICE_CONFIGURE = 20,
+ MM_OMA_SESSION_TYPE_NETWORK_INITIATED_PRL_UPDATE = 21,
+ MM_OMA_SESSION_TYPE_DEVICE_INITIATED_PRL_UPDATE = 30,
+ MM_OMA_SESSION_TYPE_DEVICE_INITIATED_HANDS_FREE_ACTIVATION = 31,
+} MMOmaSessionType;
+
+/**
+ * MMOmaSessionState:
+ * @MM_OMA_SESSION_STATE_FAILED: Failed.
+ * @MM_OMA_SESSION_STATE_UNKNOWN: Unknown.
+ * @MM_OMA_SESSION_STATE_STARTED: Started.
+ * @MM_OMA_SESSION_STATE_RETRYING: Retrying.
+ * @MM_OMA_SESSION_STATE_CONNECTING: Connecting.
+ * @MM_OMA_SESSION_STATE_CONNECTED: Connected.
+ * @MM_OMA_SESSION_STATE_AUTHENTICATED: Authenticated.
+ * @MM_OMA_SESSION_STATE_MDN_DOWNLOADED: MDN downloaded.
+ * @MM_OMA_SESSION_STATE_MSID_DOWNLOADED: MSID downloaded.
+ * @MM_OMA_SESSION_STATE_PRL_DOWNLOADED: PRL downloaded.
+ * @MM_OMA_SESSION_STATE_MIP_PROFILE_DOWNLOADED: MIP profile downloaded.
+ * @MM_OMA_SESSION_STATE_COMPLETED: Session completed.
+ *
+ * State of the OMA device management session.
+ */
+typedef enum { /*< underscore_name=mm_oma_session_state >*/
+ MM_OMA_SESSION_STATE_FAILED = -1,
+ MM_OMA_SESSION_STATE_UNKNOWN = 0,
+ MM_OMA_SESSION_STATE_STARTED = 1,
+ MM_OMA_SESSION_STATE_RETRYING = 2,
+ MM_OMA_SESSION_STATE_CONNECTING = 3,
+ MM_OMA_SESSION_STATE_CONNECTED = 4,
+ MM_OMA_SESSION_STATE_AUTHENTICATED = 5,
+ MM_OMA_SESSION_STATE_MDN_DOWNLOADED = 10,
+ MM_OMA_SESSION_STATE_MSID_DOWNLOADED = 11,
+ MM_OMA_SESSION_STATE_PRL_DOWNLOADED = 12,
+ MM_OMA_SESSION_STATE_MIP_PROFILE_DOWNLOADED = 13,
+ MM_OMA_SESSION_STATE_COMPLETED = 20,
+} MMOmaSessionState;
+
+/**
+ * MMOmaSessionStateFailedReason:
+ * @MM_OMA_SESSION_STATE_FAILED_REASON_UNKNOWN: No reason or unknown.
+ * @MM_OMA_SESSION_STATE_FAILED_REASON_NETWORK_UNAVAILABLE: Network unavailable.
+ * @MM_OMA_SESSION_STATE_FAILED_REASON_SERVER_UNAVAILABLE: Server unavailable.
+ * @MM_OMA_SESSION_STATE_FAILED_REASON_AUTHENTICATION_FAILED: Authentication failed.
+ * @MM_OMA_SESSION_STATE_FAILED_REASON_MAX_RETRY_EXCEEDED: Maximum retries exceeded.
+ * @MM_OMA_SESSION_STATE_FAILED_REASON_SESSION_CANCELLED: Session cancelled.
+ *
+ * Reason of failure in the OMA device management session.
+ */
+typedef enum { /*< underscore_name=mm_oma_session_state_failed_reason >*/
+ MM_OMA_SESSION_STATE_FAILED_REASON_UNKNOWN = 0,
+ MM_OMA_SESSION_STATE_FAILED_REASON_NETWORK_UNAVAILABLE = 1,
+ MM_OMA_SESSION_STATE_FAILED_REASON_SERVER_UNAVAILABLE = 2,
+ MM_OMA_SESSION_STATE_FAILED_REASON_AUTHENTICATION_FAILED = 3,
+ MM_OMA_SESSION_STATE_FAILED_REASON_MAX_RETRY_EXCEEDED = 4,
+ MM_OMA_SESSION_STATE_FAILED_REASON_SESSION_CANCELLED = 5
+} MMOmaSessionStateFailedReason;
+
#endif /* _MODEMMANAGER_ENUMS_H_ */
diff --git a/introspection/all.xml b/introspection/all.xml
index 4e8f57f5..4d277e36 100644
--- a/introspection/all.xml
+++ b/introspection/all.xml
@@ -15,6 +15,7 @@
+
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Oma.xml b/introspection/org.freedesktop.ModemManager1.Modem.Oma.xml
new file mode 100644
index 00000000..351ff518
--- /dev/null
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Oma.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libmm-glib/generated/Makefile.am b/libmm-glib/generated/Makefile.am
index d9010b89..14d7bf38 100644
--- a/libmm-glib/generated/Makefile.am
+++ b/libmm-glib/generated/Makefile.am
@@ -30,6 +30,7 @@ GENERATED_DOC = \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
+ mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Oma.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
@@ -95,6 +96,7 @@ mm_gdbus_modem_generated = \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
+ mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Oma.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
@@ -106,6 +108,7 @@ mm_gdbus_modem_deps = \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Location.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Time.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml \
+ $(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Oma.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \