Buggy code:
addOperation . get ( Constants . DRIVER_NAME . getName ( ) ) . set ( jdbcDriver . getValue ( ) . get ( Constants . DRIVER_NAME . getName ( ) ) ) ; addOperation . get ( Constants . DRIVER_MODULE_NAME . getName ( ) ) . set ( jdbcDriver . getValue ( ) . get ( Constants . DRIVER_MODULE_NAME . getName ( ) ) ) ; addOperation . get ( Constants . DRIVER_MAJOR_VERSION . getName ( ) ) . set ( jdbcDriver . getValue ( ) . get ( Constants . DRIVER_MAJOR_VERSION . getName ( ) ) ) ; addOperation . get ( Constants . DRIVER_MINOR_VERSION . getName ( ) ) . set ( jdbcDriver . getValue ( ) . get ( Constants . DRIVER_MINOR_VERSION . getName ( ) ) ) ; addOperation . get ( Constants . DRIVER_CLASS_NAME . getName ( ) ) . set ( jdbcDriver . getValue ( ) . get ( Constants . DRIVER_CLASS_NAME . getName ( ) ) ) ; addOperation . get ( Constants . DRIVER_DATASOURCE_CLASS_NAME . getName ( ) ) . set ( jdbcDriver . getValue ( ) . get ( Constants . DRIVER_DATASOURCE_CLASS_NAME . getName ( ) ) ) ; addOperation . get ( Constants . DRIVER_XA_DATASOURCE_CLASS_NAME . getName ( ) ) . set ( jdbcDriver . getValue ( ) . get ( Constants . DRIVER_XA_DATASOURCE_CLASS_NAME . getName ( ) ) ) ; result . add ( addOperation ) ; } } if ( subModel . hasDefined ( Constants . DATA_SOURCE ) ) { for ( final Property dataSourceProp : subModel . get ( DATA_SOURCE ) . asPropertyList ( ) ) { final ModelNode address = rootAddress . toModelNode ( ) ; address . add ( DATA_SOURCE , dataSourceProp . getName ( ) ) ; final ModelNode addOperation = Util . getEmptyOperation ( ADD , address ) ; final ModelNode dataSource = dataSourceProp . getValue ( ) ; AbstractDataSourceAdd . populateAddModel ( dataSource , addOperation , Constants . CONNECTION_PROPERTIES . getName ( ) , DataSourcesSubsystemProviders . DATASOURCE_ATTRIBUTE ) ; addOperation . get ( Constants . DATASOURCE_DRIVER . getName ( ) ) . set ( dataSourceProp . getValue ( ) . get ( Constants . DATASOURCE_DRIVER . getName ( ) ) ) ; result . add ( addOperation ) ; if ( dataSource . hasDefined ( Constants . CONNECTION_PROPERTIES . getName ( ) ) ) { for ( final Property prop : dataSource . get ( Constants . CONNECTION_PROPERTIES . getName ( ) ) . asPropertyList ( ) ) { final ModelNode propAddress = address . clone ( ) ; propAddress . add ( Constants . CONNECTION_PROPERTIES . getName ( ) , prop . getName ( ) ) ; final ModelNode addPropOperation = Util . getEmptyOperation ( ADD , propAddress ) ; addPropOperation . get ( "value" ) . set ( prop . getValue ( ) . get ( VALUE ) . asString ( ) ) ; result . add ( addPropOperation ) ; } } if ( ( ! ( dataSource . hasDefined ( Constants . ENABLED . getName ( ) ) ) ) || ( dataSource . get ( Constants . ENABLED . getName ( ) ) . asBoolean ( ) ) ) { final ModelNode enableOperation = new ModelNode ( ) ; enableOperation . get ( OP ) . set ( ENABLE ) ; enableOperation . get ( OP_ADDR ) . set ( address ) ; enableOperation . get ( PERSISTENT ) . set ( dataSource . hasDefined ( Constants . ENABLED . getName ( ) ) ) ; result . add ( enableOperation ) ; } } } if ( subModel . hasDefined ( Constants . XA_DATASOURCE ) ) { for ( final Property dataSourceProp : subModel . get ( XA_DATASOURCE ) . asPropertyList ( ) ) { final ModelNode address = rootAddress . toModelNode ( ) ; address . add ( XA_DATASOURCE , dataSourceProp . getName ( ) ) ; final ModelNode addOperation = Util . getEmptyOperation ( ADD , address ) ; final ModelNode dataSource = dataSourceProp . getValue ( ) ; AbstractDataSourceAdd . populateAddModel ( dataSource , addOperation , Constants . XADATASOURCE_PROPERTIES . getName ( ) , DataSourcesSubsystemProviders . XA_DATASOURCE_ATTRIBUTE ) ; addOperation . get ( Constants . DATASOURCE_DRIVER . getName ( ) ) . set ( dataSourceProp . getValue ( ) . get ( Constants . DATASOURCE_DRIVER . getName ( ) ) ) ; result . add ( addOperation ) ; if ( dataSource . hasDefined ( Constants . XADATASOURCE_PROPERTIES . getName ( ) ) ) { for ( final Property prop : dataSource . get ( Constants . XADATASOURCE_PROPERTIES . getName ( ) ) . asPropertyList ( ) ) { final ModelNode propAddress = address . clone ( ) ; propAddress . add ( Constants . XADATASOURCE_PROPERTIES . getName ( ) , prop . getName ( ) ) ; final ModelNode addPropOperation = Util . getEmptyOperation ( ADD , propAddress ) ; addPropOperation . get ( "value" ) . set ( prop . getValue ( ) . get ( VALUE ) . asString ( ) ) ; result . add ( addPropOperation ) ; } } if ( ( ! ( dataSource . hasDefined ( Constants . ENABLED . getName ( ) ) ) ) || ( dataSource . get ( Constants . ENABLED . getName ( ) ) . asBoolean ( ) ) ) { final ModelNode enableOperation = new ModelNode ( ) ; enableOperation . get ( OP ) . set ( ENABLE ) ; enableOperation . get ( OP_ADDR ) . set ( address ) ; enableOperation . get ( PERSISTENT ) . set ( dataSource . hasDefined ( Constants . ENABLED . getName ( ) ) ) ; result . add ( enableOperation ) ; } } } <START_BUG> context . completeStep ( ) ; <END_BUG> } @ Override public ModelNode getModelDescription ( Locale locale ) { } } public static ResourceDescriptionResolver getResourceDescriptionResolver ( final String keyPrefix ) { } }

Fix:
context . stepCompleted ( ) ;