You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/01/02 15:24:51 UTC

[incubator-servicecomb-saga] branch SCB-154 updated (40d26d7 -> 1b5ce46)

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a change to branch SCB-154
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git.


    omit 40d26d7  SCB-154 Updated the groupId to org.apache.servicecomb.saga
    omit 3a00229  SCB-154 Changed the saga packages to org.apache.servicecomb
    omit 213b14f  SCB-154 Change the package name to org.apache.servicecomb of pack
    omit e4ed089  SCB-104 Removed the get method in the RestTemplateTransport
     add 0f36948  SCB-104 Removed the get method in the RestTemplateTransport
     add 5328f26  SCB-149 removed unnecessary endpoint interface
     add a682178  SCB-149 added service name and instance id to contract
     add 4e8c376  SCB-149 checked matching of compensation method
     add d801105  SCB-149 omega callback signature change
     add 314a271  SCB-149 distinguished omega callbacks by service name and instance id
     add 49235b5  SCB-149 pushed failed compensations to a scheduled task queue
     add 9c178a0  SCB-152 sent tx compensated event on compensation completed
     new d3b7ac7  SCB-154 Update the package to org.apache.servicecomb
     new 1b5ce46  SCB-154 Changed the artifact group id to org.apache.servicecomb.saga

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (40d26d7)
            \
             N -- N -- N   refs/heads/SCB-154 (1b5ce46)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 alpha/alpha-core/pom.xml                           |   9 ++
 .../{OmegaCallback.java => AlphaException.java}    |   6 +-
 ...Repository.java => CompositeOmegaCallback.java} |  26 ++++-
 .../servicecomb/saga/alpha/core/OmegaCallback.java |   2 +-
 ...EventRepository.java => PendingTaskRunner.java} |  27 ++++-
 .../saga/alpha/core/PushBackOmegaCallback.java     |  44 +++++---
 .../saga/alpha/core/TxConsistentService.java       |  12 +-
 .../servicecomb/saga/alpha/core/TxEvent.java       |  17 ++-
 .../alpha/core/CompositeOmegaCallbackTest.java     | 121 +++++++++++++++++++++
 .../saga/alpha/core/PendingTaskRunnerTest.java     |  60 ++++++++++
 .../saga/alpha/core/PushBackOmegaCallbackTest.java |  65 +++++++++++
 .../saga/alpha/core/TxConsistentServiceTest.java   |  43 ++++----
 .../servicecomb/saga/alpha/core/TxEventMaker.java  |  19 +++-
 .../alpha-core}/src/test/resources/log4j2-test.xml |   0
 alpha/alpha-server/pom.xml                         |   4 +
 .../servicecomb/saga/alpha/server/AlphaConfig.java |  30 ++++-
 .../saga/alpha/server/GrpcTxEventEndpointImpl.java |   3 +
 .../saga/alpha/server/TxEventEnvelope.java         |  15 ++-
 .../alpha/server/TxEventEnvelopeRepository.java    |   2 +-
 .../src/main/resources/schema-mysql.sql            |   2 +
 .../saga/alpha/server/AlphaIntegrationTest.java    |  53 +++++----
 integration-tests/coverage-aggregate/pom.xml       |   4 +
 .../pack/tests/GreetingApplication.java            |   3 +-
 .../saga/integration/pack/tests/PackIT.java        |  21 +++-
 .../integration/pack/tests/TxEventEnvelope.java    |  10 ++
 .../connector/grpc/GrpcClientMessageSender.java    |  21 +++-
 .../connector/grpc/GrpcTxEventEndpointImpl.java    |  39 -------
 .../grpc/GrpcClientMessageSenderTest.java          |  90 ---------------
 .../saga/omega/context/IdGenerator.java            |   2 +-
 .../saga/omega/context/OmegaContext.java           |   4 +-
 .../saga/omega/context/ServiceConfig.java          |  30 ++---
 .../saga/omega/context/UniqueIdGenerator.java      |   2 +-
 .../saga/omega/context/OmegaContextTest.java       |   2 +-
 .../saga/omega/format/NativeMessageFormat.java     |   2 +-
 .../saga/omega/format/NativeMessageFormatTest.java |   3 +-
 .../servicecomb/saga/omega/spring/EnableOmega.java |   2 +-
 .../saga/omega/spring/OmegaSpringConfig.java       |  48 ++++----
 .../spring/CompensableAnnotationProcessor.java     |   5 +-
 .../spring/CompensableMethodCheckingCallback.java  |   4 +-
 .../spring/TransactionAspectConfig.java            |  16 ++-
 .../spring/CompensableAnnotationCheckingTest.java  |   2 +-
 .../transaction/spring/MisconfiguredService.java   |   5 +-
 .../spring/TransactionInterceptionTest.java        | 111 ++++++++-----------
 .../transaction/spring/TransactionTestMain.java    |   2 +-
 .../spring/TransactionalUserService.java           |   2 +-
 .../saga/omega/transaction/spring/User.java        |  10 +-
 .../omega/transaction/spring/UserRepository.java   |   2 +-
 ...ceptor.java => CompensationMessageHandler.java} |  21 ++--
 .../transaction/FailedTransactionInterceptor.java  |  11 +-
 .../saga/omega/transaction/MessageHandler.java     |   2 +-
 .../saga/omega/transaction/TransactionAspect.java  |   4 +-
 .../saga/omega/transaction/TxAbortedEvent.java     |  15 ++-
 .../{TxEndedEvent.java => TxCompensatedEvent.java} |   4 +-
 .../saga/omega/transaction/TxEndedEvent.java       |   4 +-
 .../saga/omega/transaction/TxEvent.java            |  13 +++
 .../saga/omega/transaction/TxStartedEvent.java     |   4 +-
 ...st.java => CompensationMessageHandlerTest.java} |  37 ++++---
 .../PostTransactionInterceptorTest.java            |   1 +
 .../transaction/PreTransactionInterceptorTest.java |   1 +
 .../transport/resttemplate/RestTemplateConfig.java |   2 +-
 .../TransactionClientHttpRequestInterceptor.java   |  10 +-
 .../TransactionHandlerInterceptor.java             |  12 +-
 .../omega/transport/resttemplate/WebConfig.java    |   3 +-
 ...ransactionClientHttpRequestInterceptorTest.java |  15 +--
 .../TransactionHandlerInterceptorTest.java         |  13 +--
 .../resttemplate/UniqueIdGeneratorTest.java        |   3 +-
 .../pack/contract/grpc/GrpcTxEventEndpoint.java    |  25 -----
 .../src/main/proto/GrpcTxEvent.proto               |   2 +
 .../servicecomb/saga/core/GraphBasedSaga.java      |   2 +-
 .../servicecomb/saga/core/NoOpSagaRequest.java     |  15 ++-
 .../apache/servicecomb/saga/core/SagaRequest.java  |   4 +-
 .../saga/core/actors/ActorBasedSaga.java           |  10 +-
 .../saga/core/actors/ActorBasedSagaFactory.java    |  10 +-
 .../saga/core/actors/CompletionCallbackActor.java  |   7 +-
 .../saga/core/actors/EventContextImpl.java         |   4 +-
 .../servicecomb/saga/core/actors/RequestActor.java |   4 +-
 .../saga/core/actors/RequestActorBuilder.java      |   1 -
 .../core/application/SagaExecutionComponent.java   |   8 +-
 .../saga/core/application/SagaFactory.java         |   2 +-
 .../saga/core/dag/GraphBasedSagaFactory.java       |   8 +-
 .../servicecomb/saga/core/dag/GraphBuilder.java    |   1 +
 .../infrastructure/ContextAwareEventStore.java     |   2 +-
 .../saga/core/SagaExecutionComponentTestBase.java  |  34 +++---
 .../servicecomb/saga/core/SagaIntegrationTest.java |  46 ++++----
 .../ActorBasedSagaExecutionComponentTest.java      |   2 +-
 .../core/actors/ActorBasedSagaIntegrationTest.java |  83 +++++++-------
 .../core/actors/CompletionCallbackActorTest.java   |  12 +-
 .../saga/core/actors/EventContextImplTest.java     |   4 +-
 .../saga/core/actors/RequestActorBuilderTest.java  |  34 +++---
 .../saga/core/actors/RequestActorTest.java         |  65 ++++++-----
 .../dag/GraphBasedSagaExecutionComponentTest.java  |   2 +-
 .../saga/core/dag/GraphBuilderTest.java            |  12 +-
 .../infrastructure/ContextAwareEventStoreTest.java |   2 +-
 .../center/ServiceCenterDiscoveryConfig.java       |   5 +-
 .../ServiceCenterDiscoveryRestTransportTest.java   |   9 +-
 .../servicecomb/saga/format/ChildrenExtractor.java |   3 +-
 .../servicecomb/saga/format/JacksonFallback.java   |  12 +-
 .../saga/format/JacksonFromJsonFormat.java         |   7 +-
 .../saga/format/JacksonRestOperation.java          |   4 +-
 .../saga/format/JacksonRestTransaction.java        |   4 +-
 .../saga/format/JacksonSagaEventFormat.java        |   6 +-
 .../saga/format/JsonRestSagaRequest.java           |   5 +-
 .../saga/format/JsonSagaDefinition.java            |   4 +-
 .../servicecomb/saga/format/JsonSagaRequest.java   |   9 +-
 .../saga/format/JsonSuccessfulSagaResponse.java    |   4 +-
 .../servicecomb/saga/format/TransportAware.java    |   2 +-
 .../saga/format/ChildrenExtractorTest.java         |   3 +-
 .../saga/format/JacksonFromJsonFormatTest.java     |  19 ++--
 .../saga/format/JacksonRestOperationTest.java      |   9 +-
 .../saga/format/JsonRestSagaRequestTest.java       |   2 +-
 .../saga/format/JsonSagaDefinitionTest.java        |   3 +-
 .../saga/format/SagaEventFormatTest.java           |  26 ++---
 .../saga/spring/JpaPersistentStore.java            |   5 +-
 .../servicecomb/saga/spring/SagaController.java    |   4 +-
 .../saga/spring/SagaExecutionQueryService.java     |  13 ++-
 .../servicecomb/saga/spring/SagaSpringConfig.java  |  14 +--
 .../servicecomb/saga/spring/SagaRecoveryTest.java  |  22 ++--
 .../saga/spring/SagaSpringApplicationTestBase.java |   4 +-
 .../saga/transports/HttpClientTransportConfig.java |   3 +-
 .../saga/transports/RestTransportTest.java         |   3 +-
 .../transports/httpclient/HttpClientTransport.java |   2 +-
 .../httpclient/HttpClientTransportTest.java        |   4 +-
 .../resttemplate/RestTemplateTransport.java        |   5 +-
 123 files changed, 1031 insertions(+), 762 deletions(-)
 copy alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/{OmegaCallback.java => AlphaException.java} (86%)
 copy alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/{TxEventRepository.java => CompositeOmegaCallback.java} (51%)
 copy alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/{TxEventRepository.java => PendingTaskRunner.java} (53%)
 copy saga-core/src/main/java/org/apache/servicecomb/saga/core/BackwardRecovery.java => alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/PushBackOmegaCallback.java (52%)
 create mode 100644 alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/CompositeOmegaCallbackTest.java
 create mode 100644 alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/PendingTaskRunnerTest.java
 create mode 100644 alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/PushBackOmegaCallbackTest.java
 copy omega/omega-context/src/main/java/org/apapche/servicecomb/saga/omega/context/UniqueIdGenerator.java => alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/TxEventMaker.java (61%)
 copy {saga-spring => alpha/alpha-core}/src/test/resources/log4j2-test.xml (100%)
 delete mode 100644 omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/GrpcTxEventEndpointImpl.java
 delete mode 100644 omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSenderTest.java
 rename omega/omega-context/src/main/java/org/{apapche => apache}/servicecomb/saga/omega/context/IdGenerator.java (94%)
 rename omega/omega-context/src/main/java/org/{apapche => apache}/servicecomb/saga/omega/context/OmegaContext.java (97%)
 copy saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEvent.java => omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/ServiceConfig.java (58%)
 rename omega/omega-context/src/main/java/org/{apapche => apache}/servicecomb/saga/omega/context/UniqueIdGenerator.java (94%)
 rename omega/omega-context/src/test/java/org/{apapche => apache}/servicecomb/saga/omega/context/OmegaContextTest.java (98%)
 rename omega/omega-spring-tx/src/main/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/CompensableAnnotationProcessor.java (92%)
 rename omega/omega-spring-tx/src/main/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/CompensableMethodCheckingCallback.java (94%)
 rename omega/omega-spring-tx/src/main/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java (78%)
 rename omega/omega-spring-tx/src/test/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/CompensableAnnotationCheckingTest.java (96%)
 rename omega/omega-spring-tx/src/test/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/MisconfiguredService.java (94%)
 rename omega/omega-spring-tx/src/test/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java (59%)
 rename omega/omega-spring-tx/src/test/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/TransactionTestMain.java (94%)
 rename omega/omega-spring-tx/src/test/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/TransactionalUserService.java (96%)
 rename omega/omega-spring-tx/src/test/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/User.java (88%)
 rename omega/omega-spring-tx/src/test/java/org/{appache => apache}/servicecomb/saga/omega/transaction/spring/UserRepository.java (93%)
 copy omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/{FailedTransactionInterceptor.java => CompensationMessageHandler.java} (60%)
 copy omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/{TxEndedEvent.java => TxCompensatedEvent.java} (85%)
 copy omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/{PreTransactionInterceptorTest.java => CompensationMessageHandlerTest.java} (52%)
 delete mode 100644 pack-contracts/pack-contract-grpc/src/main/java/org/apache/servicecomb/saga/pack/contract/grpc/GrpcTxEventEndpoint.java

-- 
To stop receiving notification emails like this one, please contact
['"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>'].

[incubator-servicecomb-saga] 01/02: SCB-154 Update the package to org.apache.servicecomb

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch SCB-154
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git

commit d3b7ac7f5a17b340ec3f53a193354f701e262601
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Tue Jan 2 23:12:27 2018 +0800

    SCB-154 Update the package to org.apache.servicecomb
---
 .../saga/alpha/core/AlphaException.java            |   2 +-
 .../saga/alpha/core/CompositeOmegaCallback.java    |   2 +-
 .../servicecomb/saga/alpha/core/EventType.java     |   2 +-
 .../servicecomb/saga/alpha/core/OmegaCallback.java |   2 +-
 .../saga/alpha/core/PendingTaskRunner.java         |   2 +-
 .../saga/alpha/core/PushBackOmegaCallback.java     |   2 +-
 .../saga/alpha/core/TxConsistentService.java       |  11 +-
 .../servicecomb/saga/alpha/core/TxEvent.java       |   2 +-
 .../saga/alpha/core/TxEventRepository.java         |   2 +-
 .../alpha/core/CompositeOmegaCallbackTest.java     |   9 +-
 .../saga/alpha/core/PendingTaskRunnerTest.java     |   2 +-
 .../saga/alpha/core/PushBackOmegaCallbackTest.java |   4 +-
 .../saga/alpha/core/TxConsistentServiceTest.java   |  28 +-
 .../servicecomb/saga/alpha/core/TxEventMaker.java  |   2 +-
 .../saga/alpha/server/AlphaApplication.java        |   2 +-
 .../servicecomb/saga/alpha/server/AlphaConfig.java |  14 +-
 .../saga/alpha/server/GrpcStartable.java           |   2 +-
 .../saga/alpha/server/GrpcTxEventEndpointImpl.java |  12 +-
 .../saga/alpha/server/ServerStartable.java         |   2 +-
 .../saga/alpha/server/SpringTxEventRepository.java |   6 +-
 .../saga/alpha/server/TxEventEnvelope.java         |   4 +-
 .../alpha/server/TxEventEnvelopeRepository.java    |   4 +-
 .../saga/alpha/server/AlphaIntegrationTest.java    |  37 +--
 .../pack/tests/GreetingApplication.java            |   5 +-
 .../integration/pack/tests/GreetingController.java |   2 +-
 .../integration/pack/tests/GreetingService.java    |   4 +-
 .../saga/integration/pack/tests/PackIT.java        |   8 +-
 .../integration/pack/tests/TxEventEnvelope.java    |   2 +-
 .../pack/tests/TxEventEnvelopeRepository.java      |   2 +-
 .../connector/grpc/GrpcClientMessageSender.java    |  20 +-
 .../saga/omega/context/IdGenerator.java            |   2 +-
 .../saga/omega/context/OmegaContext.java           |   2 +-
 .../saga/omega/context/ServiceConfig.java          |   2 +-
 .../saga/omega/context/UniqueIdGenerator.java      |   2 +-
 .../saga/omega/context/OmegaContextTest.java       |   2 +-
 .../saga/omega/format/NativeMessageFormat.java     |  10 +-
 .../saga/omega/format/NativeMessageFormatTest.java |   9 +-
 .../servicecomb/saga/omega/spring/EnableOmega.java |   4 +-
 .../saga/omega/spring/OmegaSpringConfig.java       |  17 +-
 .../spring/CompensableAnnotationProcessor.java     |   5 +-
 .../spring/CompensableMethodCheckingCallback.java  |   8 +-
 .../spring/TransactionAspectConfig.java            |  13 +-
 .../spring/CompensableAnnotationCheckingTest.java  |   2 +-
 .../transaction/spring/MisconfiguredService.java   |   5 +-
 .../spring/TransactionInterceptionTest.java        |  22 +-
 .../transaction/spring/TransactionTestMain.java    |   2 +-
 .../spring/TransactionalUserService.java           |   4 +-
 .../saga/omega/transaction/spring/User.java        |   2 +-
 .../omega/transaction/spring/UserRepository.java   |   2 +-
 .../transaction/CompensationMessageHandler.java    |   4 +-
 .../transaction/FailedTransactionInterceptor.java  |   2 +-
 .../omega/transaction/MessageDeserializer.java     |   2 +-
 .../saga/omega/transaction/MessageHandler.java     |   2 +-
 .../saga/omega/transaction/MessageSender.java      |   2 +-
 .../saga/omega/transaction/MessageSerializer.java  |   2 +-
 .../saga/omega/transaction/OmegaException.java     |   2 +-
 .../transaction/PostTransactionInterceptor.java    |   2 +-
 .../transaction/PreTransactionInterceptor.java     |   2 +-
 .../saga/omega/transaction/TransactionAspect.java  |   8 +-
 .../saga/omega/transaction/TxAbortedEvent.java     |   2 +-
 .../saga/omega/transaction/TxCompensatedEvent.java |   2 +-
 .../saga/omega/transaction/TxEndedEvent.java       |   2 +-
 .../saga/omega/transaction/TxEvent.java            |   2 +-
 .../saga/omega/transaction/TxStartedEvent.java     |   2 +-
 .../omega/transaction/annotations/Compensable.java |   2 +-
 .../CompensationMessageHandlerTest.java            |   5 +-
 .../PostTransactionInterceptorTest.java            |   2 +-
 .../transaction/PreTransactionInterceptorTest.java |   2 +-
 .../transport/resttemplate/RestTemplateConfig.java |   4 +-
 .../TransactionClientHttpRequestInterceptor.java   |  12 +-
 .../TransactionHandlerInterceptor.java             |  14 +-
 .../omega/transport/resttemplate/WebConfig.java    |   5 +-
 .../src/main/resources/META-INF/spring.factories   |   4 +-
 ...ransactionClientHttpRequestInterceptorTest.java |  19 +-
 .../TransactionHandlerInterceptorTest.java         |  17 +-
 .../resttemplate/UniqueIdGeneratorTest.java        |   7 +-
 .../src/main/proto/GrpcTxEvent.proto               |   2 +-
 .../servicecomb/saga/core/BackwardRecovery.java    |   2 +-
 .../servicecomb/saga/core/Compensation.java        |   2 +-
 .../saga/core/CompensationTaskConsumer.java        |   5 +-
 .../servicecomb/saga/core/CompositeSagaLog.java    |   2 +-
 .../saga/core/CompositeSagaResponse.java           |   2 +-
 .../apache}/servicecomb/saga/core/Descriptive.java |   2 +-
 .../servicecomb/saga/core/EventContext.java        |   2 +-
 .../servicecomb/saga/core/EventEnvelope.java       |   2 +-
 .../apache}/servicecomb/saga/core/EventStore.java  |   2 +-
 .../servicecomb/saga/core/FailedSagaResponse.java  |   2 +-
 .../apache}/servicecomb/saga/core/Fallback.java    |   2 +-
 .../servicecomb/saga/core/FallbackPolicy.java      |   2 +-
 .../servicecomb/saga/core/ForwardRecovery.java     |   2 +-
 .../servicecomb/saga/core/GraphBasedSaga.java      |  12 +-
 .../apache}/servicecomb/saga/core/IdGenerator.java |   2 +-
 .../saga/core/LoggingRecoveryPolicy.java           |   2 +-
 .../servicecomb/saga/core/LongIdGenerator.java     |   2 +-
 .../servicecomb/saga/core/NoOpSagaRequest.java     |  18 +-
 .../apache}/servicecomb/saga/core/Operation.java   |   2 +-
 .../servicecomb/saga/core/PersistentLog.java       |   2 +-
 .../servicecomb/saga/core/PersistentStore.java     |   2 +-
 .../servicecomb/saga/core/RecoveryPolicy.java      |   2 +-
 .../servicecomb/saga/core/RequestProcessTask.java  |   2 +-
 .../servicecomb/saga/core/RestOperation.java       |   4 +-
 .../apache}/servicecomb/saga/core/Saga.java        |   2 +-
 .../apache}/servicecomb/saga/core/SagaContext.java |   2 +-
 .../servicecomb/saga/core/SagaContextImpl.java     |  11 +-
 .../servicecomb/saga/core/SagaDefinition.java      |   2 +-
 .../apache}/servicecomb/saga/core/SagaEndTask.java |   6 +-
 .../servicecomb/saga/core/SagaEndedEvent.java      |   2 +-
 .../apache}/servicecomb/saga/core/SagaEvent.java   |   2 +-
 .../servicecomb/saga/core/SagaException.java       |   2 +-
 .../apache}/servicecomb/saga/core/SagaLog.java     |   2 +-
 .../apache}/servicecomb/saga/core/SagaRequest.java |   4 +-
 .../servicecomb/saga/core/SagaRequestImpl.java     |   7 +-
 .../servicecomb/saga/core/SagaResponse.java        |   2 +-
 .../saga/core/SagaStartFailedException.java        |   2 +-
 .../servicecomb/saga/core/SagaStartTask.java       |   6 +-
 .../servicecomb/saga/core/SagaStartedEvent.java    |   2 +-
 .../apache}/servicecomb/saga/core/SagaState.java   |   2 +-
 .../apache}/servicecomb/saga/core/SagaTask.java    |   2 +-
 .../servicecomb/saga/core/SagaTaskFactory.java     |  12 +-
 .../saga/core/SuccessfulSagaResponse.java          |   2 +-
 .../servicecomb/saga/core/TaskConsumer.java        |   4 +-
 .../apache}/servicecomb/saga/core/TaskRunner.java  |   6 +-
 .../servicecomb/saga/core/ToJsonFormat.java        |   2 +-
 .../apache}/servicecomb/saga/core/Transaction.java |   2 +-
 .../saga/core/TransactionAbortedEvent.java         |   2 +-
 .../saga/core/TransactionCompensatedEvent.java     |   2 +-
 .../saga/core/TransactionEndedEvent.java           |   2 +-
 .../saga/core/TransactionFailedException.java      |   2 +-
 .../saga/core/TransactionStartedEvent.java         |   2 +-
 .../saga/core/TransactionTaskConsumer.java         |   5 +-
 .../apache}/servicecomb/saga/core/Transport.java   |   2 +-
 .../saga/core/TransportFailedException.java        |   2 +-
 .../saga/core/actors/ActorBasedSaga.java           |  21 +-
 .../saga/core/actors/ActorBasedSagaFactory.java    |  20 +-
 .../saga/core/actors/CompletionCallbackActor.java  |  17 +-
 .../saga/core/actors/EventContextImpl.java         |  16 +-
 .../servicecomb/saga/core/actors/RequestActor.java |  38 +--
 .../saga/core/actors/RequestActorBuilder.java      |  30 +-
 .../saga/core/actors/RequestActorContext.java      |   8 +-
 .../saga/core/actors/messages/AbortMessage.java    |   6 +-
 .../core/actors/messages/AbortRecoveryMessage.java |   4 +-
 .../core/actors/messages/CompensateMessage.java    |   4 +-
 .../messages/CompensationRecoveryMessage.java      |   2 +-
 .../saga/core/actors/messages/FailMessage.java     |   6 +-
 .../saga/core/actors/messages/Message.java         |   2 +-
 .../saga/core/actors/messages/TransactMessage.java |   6 +-
 .../messages/TransactionRecoveryMessage.java       |   4 +-
 .../core/application/SagaExecutionComponent.java   |  22 +-
 .../saga/core/application/SagaFactory.java         |   8 +-
 .../application/interpreter/FromJsonFormat.java    |   2 +-
 .../interpreter/RestRequestChecker.java            |   2 +-
 .../saga/core/dag/ByLevelTraveller.java            |   2 +-
 .../saga/core/dag/FromLeafTraversalDirection.java  |   2 +-
 .../saga/core/dag/FromRootTraversalDirection.java  |   2 +-
 .../saga/core/dag/GraphBasedSagaFactory.java       |  24 +-
 .../servicecomb/saga/core/dag/GraphBuilder.java    |   9 +-
 .../saga/core/dag/GraphCycleDetector.java          |   2 +-
 .../saga/core/dag/GraphCycleDetectorImpl.java      |   2 +-
 .../apache}/servicecomb/saga/core/dag/Node.java    |   2 +-
 .../core/dag/SingleLeafDirectedAcyclicGraph.java   |   2 +-
 .../servicecomb/saga/core/dag/Traveller.java       |   2 +-
 .../saga/core/dag/TraversalDirection.java          |   2 +-
 .../infrastructure/ContextAwareEventStore.java     |  10 +-
 .../saga/infrastructure/EmbeddedEventStore.java    |   9 +-
 .../servicecomb/saga/transports/RestTransport.java |   6 +-
 .../saga/transports/TransportFactory.java          |   2 +-
 .../saga/core/BackwardRecoveryTest.java            |   2 +-
 .../servicecomb/saga/core/CompensationImpl.java    |   2 +-
 .../saga/core/CompositeSagaLogTest.java            |   2 +-
 .../saga/core/CompositeSagaResponseTest.java       |   2 +-
 .../apache}/servicecomb/saga/core/DummyEvent.java  |   2 +-
 .../servicecomb/saga/core/FallbackPolicyTest.java  |   2 +-
 .../servicecomb/saga/core/ForwardRecoveryTest.java |   2 +-
 .../servicecomb/saga/core/LongIdGeneratorTest.java |   2 +-
 .../servicecomb/saga/core/RestOperationTest.java   |   2 +-
 .../servicecomb/saga/core/RetrySagaLogTest.java    |   4 +-
 .../servicecomb/saga/core/SagaEndTaskTest.java     |   2 +-
 .../servicecomb/saga/core/SagaEventMatcher.java    |   2 +-
 .../saga/core/SagaExecutionComponentTestBase.java  |  44 ++-
 .../servicecomb/saga/core/SagaIntegrationTest.java |  50 ++-
 .../servicecomb/saga/core/SagaStartTaskTest.java   |   2 +-
 .../servicecomb/saga/core/TransactionImpl.java     |   2 +-
 .../ActorBasedSagaExecutionComponentTest.java      |   8 +-
 .../core/actors/ActorBasedSagaIntegrationTest.java | 361 +++++++++++----------
 .../core/actors/CompletionCallbackActorTest.java   |  18 +-
 .../saga/core/actors/EventContextImplTest.java     |  12 +-
 .../saga/core/actors/RequestActorBuilderTest.java  |  60 ++--
 .../saga/core/actors/RequestActorTest.java         |  77 +++--
 .../dag/DirectedAcyclicGraphTraversalTest.java     |   2 +-
 .../dag/GraphBasedSagaExecutionComponentTest.java  |   8 +-
 .../saga/core/dag/GraphBuilderTest.java            |  22 +-
 .../saga/core/dag/GraphCycleDetectorTest.java      |   2 +-
 .../servicecomb/saga/core/dag/NodeTest.java        |   2 +-
 .../infrastructure/ContextAwareEventStoreTest.java |   8 +-
 .../saga/demo/tests/ConditionalTransactionIT.java  |   2 +-
 .../inventory/InventoryApplication.java            |   2 +-
 .../transaction/inventory/InventoryController.java |   2 +-
 .../inventory/InventoryControllerTest.java         |   2 +-
 .../membership/MembershipApplication.java          |   2 +-
 .../membership/MembershipController.java           |   2 +-
 .../transaction/payment/PaymentApplication.java    |   2 +-
 .../transaction/payment/PaymentController.java     |   2 +-
 .../transaction/payment/PaymentControllerTest.java |   2 +-
 .../transaction/supplier/SupplierApplication.java  |   2 +-
 .../transaction/supplier/SupplierController.java   |   2 +-
 .../saga/demo/car/rental/CarRentalApplication.java |   2 +-
 .../saga/demo/car/rental/CarRentalController.java  |   2 +-
 .../servicecomb/saga/demo/tests/DemoIT.java        |   2 +-
 .../flight/booking/FlightBookingApplication.java   |   2 +-
 .../flight/booking/FlightBookingController.java    |   2 +-
 .../reservation/HotelReservationApplication.java   |   2 +-
 .../reservation/HotelReservationController.java    |   2 +-
 .../saga/demo/payment/PaymentApplication.java      |   2 +-
 .../saga/demo/payment/PaymentController.java       |   2 +-
 .../center/ServiceCenterDiscoveryConfig.java       |   8 +-
 .../src/main/resources/META-INF/spring.factories   |   2 +-
 .../discovery/service/center/DummyController.java  |   2 +-
 .../center/ServiceCenterDiscoveryApplication.java  |   2 +-
 .../ServiceCenterDiscoveryRestTransportTest.java   |  14 +-
 .../saga/core/FailedSagaRequestContext.java        |   8 +-
 .../servicecomb/saga/core/JacksonToJsonFormat.java |   2 +-
 .../servicecomb/saga/core/SagaRequestContext.java  |   2 +-
 .../saga/core/SuccessfulSagaRequestContext.java    |   6 +-
 .../servicecomb/saga/format/ChildrenExtractor.java |   7 +-
 .../servicecomb/saga/format/JacksonFallback.java   |  16 +-
 .../saga/format/JacksonFromJsonFormat.java         |  12 +-
 .../saga/format/JacksonRestCompensation.java       |   4 +-
 .../saga/format/JacksonRestFallback.java           |   2 +-
 .../saga/format/JacksonRestOperation.java          |  11 +-
 .../saga/format/JacksonRestTransaction.java        |   4 +-
 .../saga/format/JacksonSagaEventFormat.java        |  33 +-
 .../saga/format/JsonFailedSagaResponse.java        |   4 +-
 .../saga/format/JsonRestSagaRequest.java           |  11 +-
 .../saga/format/JsonSagaDefinition.java            |  18 +-
 .../servicecomb/saga/format/JsonSagaRequest.java   |  11 +-
 .../saga/format/JsonSuccessfulSagaResponse.java    |   4 +-
 .../servicecomb/saga/format/SagaEventFormat.java   |   4 +-
 .../servicecomb/saga/format/TransportAware.java    |   6 +-
 .../saga/format/ChildrenExtractorTest.java         |   8 +-
 .../saga/format/JacksonFromJsonFormatTest.java     |  27 +-
 .../saga/format/JacksonRestOperationTest.java      |  20 +-
 .../saga/format/JsonRestSagaRequestTest.java       |  10 +-
 .../saga/format/JsonSagaDefinitionTest.java        |   5 +-
 .../saga/format/SagaEventFormatTest.java           |  36 +-
 .../saga/spring/JpaPersistentStore.java            |  13 +-
 .../servicecomb/saga/spring/SagaController.java    |   8 +-
 .../servicecomb/saga/spring/SagaEventEntity.java   |   2 +-
 .../servicecomb/saga/spring/SagaEventRepo.java     |   2 +-
 .../saga/spring/SagaExecutionQueryService.java     |  31 +-
 .../saga/spring/SagaRecoveryListener.java          |   5 +-
 .../saga/spring/SagaShutdownListener.java          |   4 +-
 .../saga/spring/SagaSpringApplication.java         |   2 +-
 .../servicecomb/saga/spring/SagaSpringConfig.java  |  32 +-
 saga-spring/src/main/resources/META-INF/aop.xml    |   2 +-
 .../src/main/resources/META-INF/spring.factories   |   4 +-
 .../ActorBasedSagaSpringApplicationTest.java       |   2 +-
 .../GraphBasedSagaSpringApplicationTest.java       |   2 +-
 .../saga/spring/GreetingController.java            |   2 +-
 .../servicecomb/saga/spring/SagaRecoveryTest.java  |  40 +--
 .../saga/spring/SagaServiceDiscoveryTest.java      |   4 +-
 .../saga/spring/SagaSpringApplicationTestBase.java |   6 +-
 .../servicecomb/saga/web/SagaWebApplication.java   |   2 +-
 .../saga/transports/HttpClientTransportConfig.java |   5 +-
 .../src/main/resources/META-INF/spring.factories   |   2 +-
 .../saga/transports/RestTransportTest.java         |   6 +-
 .../transports/httpclient/HttpClientTransport.java |  10 +-
 .../httpclient/HttpClientTransportTest.java        |   8 +-
 .../resttemplate/RestTemplateTransport.java        |  25 +-
 268 files changed, 1069 insertions(+), 1119 deletions(-)

diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/AlphaException.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/AlphaException.java
similarity index 95%
rename from alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/AlphaException.java
rename to alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/AlphaException.java
index a5eb3c4..a7bb756 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/AlphaException.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/AlphaException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 public class AlphaException extends RuntimeException {
   public AlphaException(String cause) {
diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/CompositeOmegaCallback.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/CompositeOmegaCallback.java
similarity index 97%
rename from alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/CompositeOmegaCallback.java
rename to alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/CompositeOmegaCallback.java
index e5c4b12..86f5839 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/CompositeOmegaCallback.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/CompositeOmegaCallback.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 import java.util.Map;
 
diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/EventType.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/EventType.java
similarity index 95%
rename from alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/EventType.java
rename to alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/EventType.java
index dee34a6..3406294 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/EventType.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/EventType.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 public enum EventType {
   SagaStartedEvent,
diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/OmegaCallback.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/OmegaCallback.java
similarity index 94%
rename from alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/OmegaCallback.java
rename to alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/OmegaCallback.java
index 166994d..bc51238 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/OmegaCallback.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/OmegaCallback.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 public interface OmegaCallback {
   void compensate(TxEvent event);
diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/PendingTaskRunner.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/PendingTaskRunner.java
similarity index 97%
rename from alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/PendingTaskRunner.java
rename to alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/PendingTaskRunner.java
index c9a06fa..aafa42f 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/PendingTaskRunner.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/PendingTaskRunner.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 
diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/PushBackOmegaCallback.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/PushBackOmegaCallback.java
similarity index 97%
rename from alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/PushBackOmegaCallback.java
rename to alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/PushBackOmegaCallback.java
index 8403af0..3b27c14 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/PushBackOmegaCallback.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/PushBackOmegaCallback.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 import java.lang.invoke.MethodHandles;
 import java.util.concurrent.BlockingQueue;
diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxConsistentService.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java
similarity index 84%
rename from alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxConsistentService.java
rename to alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java
index 6fd9193..7e7839f 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxConsistentService.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java
@@ -15,10 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
-
-import static io.servicecomb.saga.alpha.core.EventType.TxAbortedEvent;
-import static io.servicecomb.saga.alpha.core.EventType.TxStartedEvent;
+package org.apache.servicecomb.saga.alpha.core;
 
 import java.util.HashMap;
 import java.util.List;
@@ -32,8 +29,8 @@ public class TxConsistentService {
   private final TxEventRepository eventRepository;
   private final OmegaCallback omegaCallback;
   private final Map<String, Consumer<TxEvent>> eventCallbacks = new HashMap<String, Consumer<TxEvent>>() {{
-    put(TxStartedEvent.name(), DO_NOTHING_CONSUMER);
-    put(TxAbortedEvent.name(), (event) -> compensate(event));
+    put(EventType.TxStartedEvent.name(), DO_NOTHING_CONSUMER);
+    put(EventType.TxAbortedEvent.name(), (event) -> compensate(event));
   }};
 
   public TxConsistentService(TxEventRepository eventRepository, OmegaCallback omegaCallback) {
@@ -47,7 +44,7 @@ public class TxConsistentService {
   }
 
   private void compensate(TxEvent event) {
-    List<TxEvent> events = eventRepository.findStartedTransactions(event.globalTxId(), TxStartedEvent.name());
+    List<TxEvent> events = eventRepository.findStartedTransactions(event.globalTxId(), EventType.TxStartedEvent.name());
     events.forEach(omegaCallback::compensate);
   }
 }
diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxEvent.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxEvent.java
similarity index 97%
rename from alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxEvent.java
rename to alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxEvent.java
index 6781cb5..9a2cea4 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxEvent.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 import java.util.Date;
 
diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxEventRepository.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxEventRepository.java
similarity index 95%
rename from alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxEventRepository.java
rename to alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxEventRepository.java
index 9eed4ea..3a90e02 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxEventRepository.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxEventRepository.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 import java.util.List;
 
diff --git a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/CompositeOmegaCallbackTest.java b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/CompositeOmegaCallbackTest.java
similarity index 92%
rename from alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/CompositeOmegaCallbackTest.java
rename to alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/CompositeOmegaCallbackTest.java
index 38e04a3..0c24549 100644
--- a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/CompositeOmegaCallbackTest.java
+++ b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/CompositeOmegaCallbackTest.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.alpha.core.EventType.TxStartedEvent;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.never;
@@ -66,7 +65,7 @@ public class CompositeOmegaCallbackTest {
 
   @Test
   public void compensateCorrespondingOmegaInstanceOnly() throws Exception {
-    TxEvent event = eventOf(serviceName2, instanceId2One, TxStartedEvent);
+    TxEvent event = eventOf(serviceName2, instanceId2One, EventType.TxStartedEvent);
 
     compositeOmegaCallback.compensate(event);
 
@@ -79,7 +78,7 @@ public class CompositeOmegaCallbackTest {
   @Test
   public void compensateOtherOmegaInstance_IfTheRequestedIsUnreachable() throws Exception {
     callbacks.get(serviceName2).remove(instanceId2One);
-    TxEvent event = eventOf(serviceName2, instanceId2One, TxStartedEvent);
+    TxEvent event = eventOf(serviceName2, instanceId2One, EventType.TxStartedEvent);
 
     compositeOmegaCallback.compensate(event);
 
@@ -92,7 +91,7 @@ public class CompositeOmegaCallbackTest {
   @Test
   public void blowsUpIfNoSuchServiceIsReachable() throws Exception {
     callbacks.get(serviceName2).clear();
-    TxEvent event = eventOf(serviceName2, instanceId2One, TxStartedEvent);
+    TxEvent event = eventOf(serviceName2, instanceId2One, EventType.TxStartedEvent);
 
     try {
       compositeOmegaCallback.compensate(event);
diff --git a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/PendingTaskRunnerTest.java b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/PendingTaskRunnerTest.java
similarity index 97%
rename from alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/PendingTaskRunnerTest.java
rename to alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/PendingTaskRunnerTest.java
index d806eec..7c3e7ba 100644
--- a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/PendingTaskRunnerTest.java
+++ b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/PendingTaskRunnerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static org.awaitility.Awaitility.await;
diff --git a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/PushBackOmegaCallbackTest.java b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/PushBackOmegaCallbackTest.java
similarity index 94%
rename from alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/PushBackOmegaCallbackTest.java
rename to alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/PushBackOmegaCallbackTest.java
index f53624c..521232c 100644
--- a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/PushBackOmegaCallbackTest.java
+++ b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/PushBackOmegaCallbackTest.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
-import static io.servicecomb.saga.alpha.core.TxEventMaker.someEvent;
+import static org.apache.servicecomb.saga.alpha.core.TxEventMaker.someEvent;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.doThrow;
diff --git a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxConsistentServiceTest.java b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/TxConsistentServiceTest.java
similarity index 84%
rename from alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxConsistentServiceTest.java
rename to alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/TxConsistentServiceTest.java
index 76b3099..6443997 100644
--- a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxConsistentServiceTest.java
+++ b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/TxConsistentServiceTest.java
@@ -15,15 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;
+package org.apache.servicecomb.saga.alpha.core;
 
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.alpha.core.EventType.SagaEndedEvent;
-import static io.servicecomb.saga.alpha.core.EventType.SagaStartedEvent;
-import static io.servicecomb.saga.alpha.core.EventType.TxAbortedEvent;
-import static io.servicecomb.saga.alpha.core.EventType.TxCompensatedEvent;
-import static io.servicecomb.saga.alpha.core.EventType.TxEndedEvent;
-import static io.servicecomb.saga.alpha.core.EventType.TxStartedEvent;
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.awaitility.Awaitility.await;
 import static org.hamcrest.Matchers.contains;
@@ -74,11 +68,11 @@ public class TxConsistentServiceTest {
   @Test
   public void persistEventOnArrival() throws Exception {
     TxEvent[] events = {
-        newEvent(SagaStartedEvent),
-        newEvent(TxStartedEvent),
-        newEvent(TxEndedEvent),
-        newEvent(TxCompensatedEvent),
-        newEvent(SagaEndedEvent)};
+        newEvent(EventType.SagaStartedEvent),
+        newEvent(EventType.TxStartedEvent),
+        newEvent(EventType.TxEndedEvent),
+        newEvent(EventType.TxCompensatedEvent),
+        newEvent(EventType.SagaEndedEvent)};
 
     for (TxEvent event : events) {
       consistentService.handle(event);
@@ -91,14 +85,14 @@ public class TxConsistentServiceTest {
   @Test
   public void compensateGlobalTx_OnAnyLocalTxFailure() throws Exception {
     String localTxId1 = UUID.randomUUID().toString();
-    events.add(eventOf(TxStartedEvent, "service a".getBytes(), localTxId1, "method a"));
-    events.add(eventOf(TxEndedEvent, new byte[0], localTxId1, "method a"));
+    events.add(eventOf(EventType.TxStartedEvent, "service a".getBytes(), localTxId1, "method a"));
+    events.add(eventOf(EventType.TxEndedEvent, new byte[0], localTxId1, "method a"));
 
     String localTxId2 = UUID.randomUUID().toString();
-    events.add(eventOf(TxStartedEvent, "service b".getBytes(), localTxId2, "method b"));
-    events.add(eventOf(TxEndedEvent, new byte[0], localTxId2, "method b"));
+    events.add(eventOf(EventType.TxStartedEvent, "service b".getBytes(), localTxId2, "method b"));
+    events.add(eventOf(EventType.TxEndedEvent, new byte[0], localTxId2, "method b"));
 
-    TxEvent abortEvent = newEvent(TxAbortedEvent);
+    TxEvent abortEvent = newEvent(EventType.TxAbortedEvent);
 
     consistentService.handle(abortEvent);
 
diff --git a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxEventMaker.java b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/TxEventMaker.java
similarity index 91%
rename from alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxEventMaker.java
rename to alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/TxEventMaker.java
index 77ef920..21a0867 100644
--- a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxEventMaker.java
+++ b/alpha/alpha-core/src/test/java/org/apache/servicecomb/saga/alpha/core/TxEventMaker.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.core;import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
+package org.apache.servicecomb.saga.alpha.core;import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
 
 import java.util.Date;
 import java.util.UUID;
diff --git a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/AlphaApplication.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaApplication.java
similarity index 95%
rename from alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/AlphaApplication.java
rename to alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaApplication.java
index c7cb79c..6967872 100644
--- a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/AlphaApplication.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.server;
+package org.apache.servicecomb.saga.alpha.server;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/AlphaConfig.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaConfig.java
similarity index 85%
rename from alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/AlphaConfig.java
rename to alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaConfig.java
index 3685894..7bd855e 100644
--- a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/AlphaConfig.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaConfig.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.server;
+package org.apache.servicecomb.saga.alpha.server;
 
 import java.util.Map;
 import java.util.concurrent.BlockingQueue;
@@ -28,12 +28,12 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import io.servicecomb.saga.alpha.core.CompositeOmegaCallback;
-import io.servicecomb.saga.alpha.core.OmegaCallback;
-import io.servicecomb.saga.alpha.core.PendingTaskRunner;
-import io.servicecomb.saga.alpha.core.PushBackOmegaCallback;
-import io.servicecomb.saga.alpha.core.TxConsistentService;
-import io.servicecomb.saga.alpha.core.TxEventRepository;
+import org.apache.servicecomb.saga.alpha.core.CompositeOmegaCallback;
+import org.apache.servicecomb.saga.alpha.core.OmegaCallback;
+import org.apache.servicecomb.saga.alpha.core.PendingTaskRunner;
+import org.apache.servicecomb.saga.alpha.core.PushBackOmegaCallback;
+import org.apache.servicecomb.saga.alpha.core.TxConsistentService;
+import org.apache.servicecomb.saga.alpha.core.TxEventRepository;
 
 @Configuration
 class AlphaConfig {
diff --git a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/GrpcStartable.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcStartable.java
similarity index 97%
rename from alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/GrpcStartable.java
rename to alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcStartable.java
index 663de71..2eefeb7 100644
--- a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/GrpcStartable.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcStartable.java
@@ -18,7 +18,7 @@
  *
  */
 
-package io.servicecomb.saga.alpha.server;
+package org.apache.servicecomb.saga.alpha.server;
 
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
diff --git a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java
similarity index 81%
rename from alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java
rename to alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java
index 3c23a79..cba9f0c 100644
--- a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java
@@ -18,16 +18,16 @@
  *
  */
 
-package io.servicecomb.saga.alpha.server;
+package org.apache.servicecomb.saga.alpha.server;
 
 import java.util.Date;
 
 import io.grpc.stub.StreamObserver;
-import io.servicecomb.saga.alpha.core.TxConsistentService;
-import io.servicecomb.saga.alpha.core.TxEvent;
-import io.servicecomb.saga.pack.contract.grpc.GrpcEmpty;
-import io.servicecomb.saga.pack.contract.grpc.GrpcTxEvent;
-import io.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc.TxEventServiceImplBase;
+import org.apache.servicecomb.saga.alpha.core.TxConsistentService;
+import org.apache.servicecomb.saga.alpha.core.TxEvent;
+import org.apache.servicecomb.saga.pack.contract.grpc.GrpcEmpty;
+import org.apache.servicecomb.saga.pack.contract.grpc.GrpcTxEvent;
+import org.apache.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc.TxEventServiceImplBase;
 
 class GrpcTxEventEndpointImpl extends TxEventServiceImplBase {
 
diff --git a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/ServerStartable.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/ServerStartable.java
similarity index 94%
rename from alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/ServerStartable.java
rename to alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/ServerStartable.java
index 4657cec..33d39df 100644
--- a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/ServerStartable.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/ServerStartable.java
@@ -18,7 +18,7 @@
  *
  */
 
-package io.servicecomb.saga.alpha.server;
+package org.apache.servicecomb.saga.alpha.server;
 
 interface ServerStartable {
   void start();
diff --git a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/SpringTxEventRepository.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/SpringTxEventRepository.java
similarity index 89%
rename from alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/SpringTxEventRepository.java
rename to alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/SpringTxEventRepository.java
index e8c8058..a8058e9 100644
--- a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/SpringTxEventRepository.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/SpringTxEventRepository.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.server;
+package org.apache.servicecomb.saga.alpha.server;
 
 import java.util.List;
 import java.util.stream.Collectors;
 
-import io.servicecomb.saga.alpha.core.TxEvent;
-import io.servicecomb.saga.alpha.core.TxEventRepository;
+import org.apache.servicecomb.saga.alpha.core.TxEvent;
+import org.apache.servicecomb.saga.alpha.core.TxEventRepository;
 
 class SpringTxEventRepository implements TxEventRepository {
   private final TxEventEnvelopeRepository eventRepo;
diff --git a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/TxEventEnvelope.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/TxEventEnvelope.java
similarity index 95%
rename from alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/TxEventEnvelope.java
rename to alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/TxEventEnvelope.java
index 06a44dc..f4b4c66 100644
--- a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/TxEventEnvelope.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/TxEventEnvelope.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.server;
+package org.apache.servicecomb.saga.alpha.server;
 
 import java.util.Date;
 
@@ -24,7 +24,7 @@ import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 
-import io.servicecomb.saga.alpha.core.TxEvent;
+import org.apache.servicecomb.saga.alpha.core.TxEvent;
 
 @Entity
 class TxEventEnvelope {
diff --git a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/TxEventEnvelopeRepository.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/TxEventEnvelopeRepository.java
similarity index 91%
rename from alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/TxEventEnvelopeRepository.java
rename to alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/TxEventEnvelopeRepository.java
index 3c35cba..fe05c1e 100644
--- a/alpha/alpha-server/src/main/java/io/servicecomb/saga/alpha/server/TxEventEnvelopeRepository.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/TxEventEnvelopeRepository.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.server;
+package org.apache.servicecomb.saga.alpha.server;
 
 import java.util.List;
 
@@ -25,7 +25,7 @@ import org.springframework.data.repository.CrudRepository;
 interface TxEventEnvelopeRepository extends CrudRepository<TxEventEnvelope, Long> {
   TxEventEnvelope findByEventGlobalTxId(String globalTxId);
 
-  @Query("SELECT DISTINCT new io.servicecomb.saga.alpha.server.TxEventEnvelope("
+  @Query("SELECT DISTINCT new org.apache.servicecomb.saga.alpha.server.TxEventEnvelope("
       + "t.event.serviceName, t.event.instanceId, t.event.globalTxId, t.event.localTxId, t.event.parentTxId, t.event.type, t.event.compensationMethod, t.event.payloads"
       + ") FROM TxEventEnvelope t "
       + "WHERE t.event.globalTxId = ?1 AND t.event.type = ?2")
diff --git a/alpha/alpha-server/src/test/java/io/servicecomb/saga/alpha/server/AlphaIntegrationTest.java b/alpha/alpha-server/src/test/java/org/apache/servicecomb/saga/alpha/server/AlphaIntegrationTest.java
similarity index 83%
rename from alpha/alpha-server/src/test/java/io/servicecomb/saga/alpha/server/AlphaIntegrationTest.java
rename to alpha/alpha-server/src/test/java/org/apache/servicecomb/saga/alpha/server/AlphaIntegrationTest.java
index 2b83b97..221c5b0 100644
--- a/alpha/alpha-server/src/test/java/io/servicecomb/saga/alpha/server/AlphaIntegrationTest.java
+++ b/alpha/alpha-server/src/test/java/org/apache/servicecomb/saga/alpha/server/AlphaIntegrationTest.java
@@ -15,12 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.alpha.server;
+package org.apache.servicecomb.saga.alpha.server;
 
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.alpha.core.EventType.TxAbortedEvent;
-import static io.servicecomb.saga.alpha.core.EventType.TxEndedEvent;
-import static io.servicecomb.saga.alpha.core.EventType.TxStartedEvent;
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.awaitility.Awaitility.await;
 import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -34,6 +31,10 @@ import java.util.List;
 import java.util.Objects;
 import java.util.UUID;
 
+import org.apache.servicecomb.saga.alpha.core.EventType;
+import org.apache.servicecomb.saga.alpha.core.OmegaCallback;
+import org.apache.servicecomb.saga.alpha.core.TxEvent;
+import org.hamcrest.core.Is;
 import org.junit.AfterClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -47,13 +48,11 @@ import com.google.protobuf.ByteString;
 
 import io.grpc.ManagedChannel;
 import io.grpc.ManagedChannelBuilder;
-import io.servicecomb.saga.alpha.core.EventType;
-import io.servicecomb.saga.alpha.core.OmegaCallback;
-import io.servicecomb.saga.alpha.core.TxEvent;
-import io.servicecomb.saga.alpha.server.AlphaIntegrationTest.OmegaCallbackConfig;
-import io.servicecomb.saga.pack.contract.grpc.GrpcTxEvent;
-import io.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc;
-import io.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc.TxEventServiceBlockingStub;
+
+import org.apache.servicecomb.saga.alpha.server.AlphaIntegrationTest.OmegaCallbackConfig;
+import org.apache.servicecomb.saga.pack.contract.grpc.GrpcTxEvent;
+import org.apache.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc;
+import org.apache.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc.TxEventServiceBlockingStub;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = {AlphaApplication.class, OmegaCallbackConfig.class}, properties = "alpha.server.port=8090")
@@ -87,7 +86,7 @@ public class AlphaIntegrationTest {
 
   @Test
   public void persistsEvent() throws Exception {
-    stub.reportEvent(someGrpcEvent(TxStartedEvent));
+    stub.reportEvent(someGrpcEvent(EventType.TxStartedEvent));
 
     TxEventEnvelope envelope = eventRepo.findByEventGlobalTxId(globalTxId);
 
@@ -96,7 +95,7 @@ public class AlphaIntegrationTest {
     assertThat(envelope.globalTxId(), is(globalTxId));
     assertThat(envelope.localTxId(), is(localTxId));
     assertThat(envelope.parentTxId(), is(parentTxId));
-    assertThat(envelope.type(), is(TxStartedEvent.name()));
+    assertThat(envelope.type(), Is.is(EventType.TxStartedEvent.name()));
     assertThat(envelope.compensationMethod(), is(compensationMethod));
     assertThat(envelope.payloads(), is(payload.getBytes()));
   }
@@ -104,15 +103,15 @@ public class AlphaIntegrationTest {
   @Test
   public void doNotCompensateDuplicateTxOnFailure() throws Exception {
     // duplicate events with same content but different timestamp
-    eventRepo.save(eventEnvelopeOf(TxStartedEvent, localTxId, parentTxId, "service a".getBytes(), "method a"));
-    eventRepo.save(eventEnvelopeOf(TxStartedEvent, localTxId, parentTxId, "service a".getBytes(), "method a"));
-    eventRepo.save(eventEnvelopeOf(TxEndedEvent, new byte[0], "method a"));
+    eventRepo.save(eventEnvelopeOf(EventType.TxStartedEvent, localTxId, parentTxId, "service a".getBytes(), "method a"));
+    eventRepo.save(eventEnvelopeOf(EventType.TxStartedEvent, localTxId, parentTxId, "service a".getBytes(), "method a"));
+    eventRepo.save(eventEnvelopeOf(EventType.TxEndedEvent, new byte[0], "method a"));
 
     String localTxId1 = UUID.randomUUID().toString();
-    eventRepo.save(eventEnvelopeOf(TxStartedEvent, localTxId1, UUID.randomUUID().toString(), "service b".getBytes(), "method b"));
-    eventRepo.save(eventEnvelopeOf(TxEndedEvent, new byte[0], "method b"));
+    eventRepo.save(eventEnvelopeOf(EventType.TxStartedEvent, localTxId1, UUID.randomUUID().toString(), "service b".getBytes(), "method b"));
+    eventRepo.save(eventEnvelopeOf(EventType.TxEndedEvent, new byte[0], "method b"));
 
-    stub.reportEvent(someGrpcEvent(TxAbortedEvent));
+    stub.reportEvent(someGrpcEvent(EventType.TxAbortedEvent));
 
     await().atMost(1, SECONDS).until(() -> compensationContexts.size() > 1);
     assertThat(compensationContexts, containsInAnyOrder(
diff --git a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingApplication.java b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingApplication.java
similarity index 90%
rename from integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingApplication.java
rename to integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingApplication.java
index 24bce7a..a9461dd 100644
--- a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingApplication.java
+++ b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingApplication.java
@@ -15,13 +15,12 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.integration.pack.tests;
+package org.apache.servicecomb.saga.integration.pack.tests;
 
+import org.apache.servicecomb.saga.omega.spring.EnableOmega;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
-import io.servicecomb.saga.omega.spring.EnableOmega;
-
 @EnableOmega
 @SpringBootApplication
 public class GreetingApplication {
diff --git a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingController.java b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingController.java
similarity index 97%
rename from integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingController.java
rename to integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingController.java
index e7c6c25..90fd4ac 100644
--- a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingController.java
+++ b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.integration.pack.tests;
+package org.apache.servicecomb.saga.integration.pack.tests;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
diff --git a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingService.java b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingService.java
similarity index 90%
rename from integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingService.java
rename to integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingService.java
index fe0f16a..ef8519f 100644
--- a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingService.java
+++ b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/GreetingService.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.integration.pack.tests;
+package org.apache.servicecomb.saga.integration.pack.tests;
 
 import org.springframework.stereotype.Service;
 
-import io.servicecomb.saga.omega.transaction.annotations.Compensable;
+import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable;
 
 @Service
 public class GreetingService {
diff --git a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/PackIT.java b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/PackIT.java
similarity index 94%
rename from integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/PackIT.java
rename to integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/PackIT.java
index fb330c8..50bbd4e 100644
--- a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/PackIT.java
+++ b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/PackIT.java
@@ -15,9 +15,8 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.integration.pack.tests;
+package org.apache.servicecomb.saga.integration.pack.tests;
 
-import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY;
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.core.Is.is;
@@ -28,6 +27,7 @@ import static org.springframework.http.HttpStatus.OK;
 import java.util.List;
 import java.util.UUID;
 
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,8 +39,6 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.ResponseEntity;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = GreetingApplication.class, webEnvironment = WebEnvironment.DEFINED_PORT,
     properties = {"server.port=8080", "spring.application.name=greeting-service"})
@@ -61,7 +59,7 @@ public class PackIT {
   public void updatesTxStateToAlpha() throws Exception {
     HttpHeaders headers = new HttpHeaders();
 
-    headers.set(GLOBAL_TX_ID_KEY, globalTxId);
+    headers.set(OmegaContext.GLOBAL_TX_ID_KEY, globalTxId);
 
     ResponseEntity<String> entity = restTemplate.exchange("/greet?name={name}",
         GET,
diff --git a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/TxEventEnvelope.java b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/TxEventEnvelope.java
similarity index 96%
rename from integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/TxEventEnvelope.java
rename to integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/TxEventEnvelope.java
index 206088d..25ef1e3 100644
--- a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/TxEventEnvelope.java
+++ b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/TxEventEnvelope.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.integration.pack.tests;
+package org.apache.servicecomb.saga.integration.pack.tests;
 
 import java.util.Date;
 
diff --git a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/TxEventEnvelopeRepository.java b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/TxEventEnvelopeRepository.java
similarity index 94%
rename from integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/TxEventEnvelopeRepository.java
rename to integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/TxEventEnvelopeRepository.java
index 7c88c2b..7e4b7e9 100644
--- a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/TxEventEnvelopeRepository.java
+++ b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/saga/integration/pack/tests/TxEventEnvelopeRepository.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.integration.pack.tests;
+package org.apache.servicecomb.saga.integration.pack.tests;
 
 import java.util.List;
 
diff --git a/omega/omega-connector/omega-connector-grpc/src/main/java/io/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java b/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java
similarity index 76%
rename from omega/omega-connector/omega-connector-grpc/src/main/java/io/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java
rename to omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java
index 2c56247..09cbaad 100644
--- a/omega/omega-connector/omega-connector-grpc/src/main/java/io/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java
+++ b/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java
@@ -18,19 +18,21 @@
  *
  */
 
-package io.servicecomb.saga.omega.connector.grpc;
+package org.apache.servicecomb.saga.omega.connector.grpc;
+
+import org.apache.servicecomb.saga.omega.transaction.TxEvent;
 
 import com.google.protobuf.ByteString;
 
 import io.grpc.ManagedChannel;
-import io.servicecomb.saga.omega.context.ServiceConfig;
-import io.servicecomb.saga.omega.transaction.MessageSender;
-import io.servicecomb.saga.omega.transaction.MessageSerializer;
-import io.servicecomb.saga.omega.transaction.TxEvent;
-import io.servicecomb.saga.pack.contract.grpc.GrpcTxEvent;
-import io.servicecomb.saga.pack.contract.grpc.GrpcTxEvent.Builder;
-import io.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc;
-import io.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc.TxEventServiceBlockingStub;
+import org.apache.servicecomb.saga.omega.context.ServiceConfig;
+import org.apache.servicecomb.saga.omega.transaction.MessageSender;
+import org.apache.servicecomb.saga.omega.transaction.MessageSerializer;
+
+import org.apache.servicecomb.saga.pack.contract.grpc.GrpcTxEvent;
+import org.apache.servicecomb.saga.pack.contract.grpc.GrpcTxEvent.Builder;
+import org.apache.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc;
+import org.apache.servicecomb.saga.pack.contract.grpc.TxEventServiceGrpc.TxEventServiceBlockingStub;
 
 public class GrpcClientMessageSender implements MessageSender {
 
diff --git a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/IdGenerator.java b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/IdGenerator.java
similarity index 94%
rename from omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/IdGenerator.java
rename to omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/IdGenerator.java
index 88de1a4..0917192 100644
--- a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/IdGenerator.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/IdGenerator.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.context;
+package org.apache.servicecomb.saga.omega.context;
 
 import java.io.Serializable;
 
diff --git a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/OmegaContext.java
similarity index 98%
rename from omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java
rename to omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/OmegaContext.java
index 705e74e..6016b53 100644
--- a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/OmegaContext.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.context;
+package org.apache.servicecomb.saga.omega.context;
 
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.InvocationTargetException;
diff --git a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/ServiceConfig.java b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/ServiceConfig.java
similarity index 96%
rename from omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/ServiceConfig.java
rename to omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/ServiceConfig.java
index 53671ad..1e16b62 100644
--- a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/ServiceConfig.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/ServiceConfig.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.context;
+package org.apache.servicecomb.saga.omega.context;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
diff --git a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/UniqueIdGenerator.java b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/UniqueIdGenerator.java
similarity index 95%
rename from omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/UniqueIdGenerator.java
rename to omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/UniqueIdGenerator.java
index 300b522..36c991a 100644
--- a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/UniqueIdGenerator.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/UniqueIdGenerator.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.context;
+package org.apache.servicecomb.saga.omega.context;
 
 import java.util.UUID;
 
diff --git a/omega/omega-context/src/test/java/io/servicecomb/saga/omega/context/OmegaContextTest.java b/omega/omega-context/src/test/java/org/apache/servicecomb/saga/omega/context/OmegaContextTest.java
similarity index 98%
rename from omega/omega-context/src/test/java/io/servicecomb/saga/omega/context/OmegaContextTest.java
rename to omega/omega-context/src/test/java/org/apache/servicecomb/saga/omega/context/OmegaContextTest.java
index 752f0b8..3f844d3 100644
--- a/omega/omega-context/src/test/java/io/servicecomb/saga/omega/context/OmegaContextTest.java
+++ b/omega/omega-context/src/test/java/org/apache/servicecomb/saga/omega/context/OmegaContextTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.context;
+package org.apache.servicecomb.saga.omega.context;
 
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
diff --git a/omega/omega-format/src/main/java/io/servicecomb/saga/omega/format/NativeMessageFormat.java b/omega/omega-format/src/main/java/org/apache/servicecomb/saga/omega/format/NativeMessageFormat.java
similarity index 86%
rename from omega/omega-format/src/main/java/io/servicecomb/saga/omega/format/NativeMessageFormat.java
rename to omega/omega-format/src/main/java/org/apache/servicecomb/saga/omega/format/NativeMessageFormat.java
index 60b4a74..a486e1d 100644
--- a/omega/omega-format/src/main/java/io/servicecomb/saga/omega/format/NativeMessageFormat.java
+++ b/omega/omega-format/src/main/java/org/apache/servicecomb/saga/omega/format/NativeMessageFormat.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.format;
+package org.apache.servicecomb.saga.omega.format;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -23,10 +23,10 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 
-import io.servicecomb.saga.omega.transaction.MessageDeserializer;
-import io.servicecomb.saga.omega.transaction.MessageSerializer;
-import io.servicecomb.saga.omega.transaction.OmegaException;
-import io.servicecomb.saga.omega.transaction.TxEvent;
+import org.apache.servicecomb.saga.omega.transaction.TxEvent;
+import org.apache.servicecomb.saga.omega.transaction.MessageDeserializer;
+import org.apache.servicecomb.saga.omega.transaction.MessageSerializer;
+import org.apache.servicecomb.saga.omega.transaction.OmegaException;
 
 public class NativeMessageFormat implements MessageSerializer, MessageDeserializer {
   @Override
diff --git a/omega/omega-format/src/test/java/io/servicecomb/saga/omega/format/NativeMessageFormatTest.java b/omega/omega-format/src/test/java/org/apache/servicecomb/saga/omega/format/NativeMessageFormatTest.java
similarity index 92%
rename from omega/omega-format/src/test/java/io/servicecomb/saga/omega/format/NativeMessageFormatTest.java
rename to omega/omega-format/src/test/java/org/apache/servicecomb/saga/omega/format/NativeMessageFormatTest.java
index 210aab1..1460fd2 100644
--- a/omega/omega-format/src/test/java/io/servicecomb/saga/omega/format/NativeMessageFormatTest.java
+++ b/omega/omega-format/src/test/java/org/apache/servicecomb/saga/omega/format/NativeMessageFormatTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.format;
+package org.apache.servicecomb.saga.omega.format;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
 import static java.util.Arrays.asList;
@@ -23,11 +23,10 @@ import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.startsWith;
 import static org.junit.Assert.assertThat;
 
+import org.apache.servicecomb.saga.omega.transaction.OmegaException;
+import org.apache.servicecomb.saga.omega.transaction.TxEvent;
 import org.junit.Test;
 
-import io.servicecomb.saga.omega.transaction.OmegaException;
-import io.servicecomb.saga.omega.transaction.TxEvent;
-
 public class NativeMessageFormatTest {
 
   private final NativeMessageFormat format = new NativeMessageFormat();
@@ -67,4 +66,4 @@ public class NativeMessageFormatTest {
 
   private static class NotSerializable {
   }
-}
\ No newline at end of file
+}
diff --git a/omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/EnableOmega.java b/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/EnableOmega.java
similarity index 89%
rename from omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/EnableOmega.java
rename to omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/EnableOmega.java
index 8d5f851..7050d29 100644
--- a/omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/EnableOmega.java
+++ b/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/EnableOmega.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.spring;
+package org.apache.servicecomb.saga.omega.spring;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
@@ -24,7 +24,7 @@ import java.lang.annotation.Target;
 
 import org.springframework.context.annotation.Import;
 
-import io.servicecomb.saga.omega.transaction.spring.TransactionAspectConfig;
+import org.apache.servicecomb.saga.omega.transaction.spring.TransactionAspectConfig;
 
 @Target(ElementType.TYPE)
 @Retention(RetentionPolicy.RUNTIME)
diff --git a/omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/OmegaSpringConfig.java b/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/OmegaSpringConfig.java
similarity index 84%
rename from omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/OmegaSpringConfig.java
rename to omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/OmegaSpringConfig.java
index 28181f4..4a454fd 100644
--- a/omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/OmegaSpringConfig.java
+++ b/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/OmegaSpringConfig.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.spring;
+package org.apache.servicecomb.saga.omega.spring;
 
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
@@ -24,6 +24,12 @@ import java.util.List;
 
 import javax.annotation.PreDestroy;
 
+import org.apache.servicecomb.saga.omega.connector.grpc.GrpcClientMessageSender;
+import org.apache.servicecomb.saga.omega.context.IdGenerator;
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.context.UniqueIdGenerator;
+import org.apache.servicecomb.saga.omega.format.NativeMessageFormat;
+import org.apache.servicecomb.saga.omega.transaction.MessageSender;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
@@ -32,13 +38,8 @@ import org.springframework.context.annotation.Configuration;
 
 import io.grpc.ManagedChannel;
 import io.grpc.ManagedChannelBuilder;
-import io.servicecomb.saga.omega.connector.grpc.GrpcClientMessageSender;
-import io.servicecomb.saga.omega.context.IdGenerator;
-import io.servicecomb.saga.omega.context.OmegaContext;
-import io.servicecomb.saga.omega.context.ServiceConfig;
-import io.servicecomb.saga.omega.context.UniqueIdGenerator;
-import io.servicecomb.saga.omega.format.NativeMessageFormat;
-import io.servicecomb.saga.omega.transaction.MessageSender;
+
+import org.apache.servicecomb.saga.omega.context.ServiceConfig;
 
 @Configuration
 class OmegaSpringConfig {
diff --git a/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/CompensableAnnotationProcessor.java b/omega/omega-spring-tx/src/main/java/org/apache/servicecomb/saga/omega/transaction/spring/CompensableAnnotationProcessor.java
similarity index 92%
rename from omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/CompensableAnnotationProcessor.java
rename to omega/omega-spring-tx/src/main/java/org/apache/servicecomb/saga/omega/transaction/spring/CompensableAnnotationProcessor.java
index e97d4d3..9cb5b27 100644
--- a/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/CompensableAnnotationProcessor.java
+++ b/omega/omega-spring-tx/src/main/java/org/apache/servicecomb/saga/omega/transaction/spring/CompensableAnnotationProcessor.java
@@ -15,14 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.util.ReflectionUtils;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-
 class CompensableAnnotationProcessor implements BeanPostProcessor {
 
   private final OmegaContext omegaContext;
diff --git a/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/CompensableMethodCheckingCallback.java b/omega/omega-spring-tx/src/main/java/org/apache/servicecomb/saga/omega/transaction/spring/CompensableMethodCheckingCallback.java
similarity index 88%
rename from omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/CompensableMethodCheckingCallback.java
rename to omega/omega-spring-tx/src/main/java/org/apache/servicecomb/saga/omega/transaction/spring/CompensableMethodCheckingCallback.java
index 64779d7..2793109 100644
--- a/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/CompensableMethodCheckingCallback.java
+++ b/omega/omega-spring-tx/src/main/java/org/apache/servicecomb/saga/omega/transaction/spring/CompensableMethodCheckingCallback.java
@@ -15,18 +15,18 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Method;
 
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.util.ReflectionUtils.MethodCallback;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-import io.servicecomb.saga.omega.transaction.OmegaException;
-import io.servicecomb.saga.omega.transaction.annotations.Compensable;
+import org.apache.servicecomb.saga.omega.transaction.OmegaException;
+import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable;
 
 class CompensableMethodCheckingCallback implements MethodCallback {
   private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
diff --git a/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java b/omega/omega-spring-tx/src/main/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java
similarity index 78%
rename from omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java
rename to omega/omega-spring-tx/src/main/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java
index da9f3f8..1d46378 100644
--- a/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java
+++ b/omega/omega-spring-tx/src/main/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java
@@ -15,18 +15,17 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.transaction.CompensationMessageHandler;
+import org.apache.servicecomb.saga.omega.transaction.MessageHandler;
+import org.apache.servicecomb.saga.omega.transaction.MessageSender;
+import org.apache.servicecomb.saga.omega.transaction.TransactionAspect;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-import io.servicecomb.saga.omega.transaction.CompensationMessageHandler;
-import io.servicecomb.saga.omega.transaction.MessageHandler;
-import io.servicecomb.saga.omega.transaction.MessageSender;
-import io.servicecomb.saga.omega.transaction.TransactionAspect;
-
 @Configuration
 @EnableAspectJAutoProxy
 public class TransactionAspectConfig {
diff --git a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/CompensableAnnotationCheckingTest.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/CompensableAnnotationCheckingTest.java
similarity index 96%
rename from omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/CompensableAnnotationCheckingTest.java
rename to omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/CompensableAnnotationCheckingTest.java
index 29698a0..3b399b9 100644
--- a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/CompensableAnnotationCheckingTest.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/CompensableAnnotationCheckingTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
 import static org.hamcrest.CoreMatchers.startsWith;
diff --git a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/MisconfiguredService.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/MisconfiguredService.java
similarity index 88%
rename from omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/MisconfiguredService.java
rename to omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/MisconfiguredService.java
index 854959a..a569d23 100644
--- a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/MisconfiguredService.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/MisconfiguredService.java
@@ -15,13 +15,12 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
+import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable;
 import org.springframework.context.annotation.Profile;
 import org.springframework.stereotype.Component;
 
-import io.servicecomb.saga.omega.transaction.annotations.Compensable;
-
 @Profile("annotation-checking")
 @Component
 class MisconfiguredService {
diff --git a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
similarity index 88%
rename from omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
rename to omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
index 7efa304..dc23612 100644
--- a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.omega.transaction.spring.TransactionalUserService.ILLEGAL_USER;
+import static org.apache.servicecomb.saga.omega.transaction.spring.TransactionalUserService.ILLEGAL_USER;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertArrayEquals;
@@ -40,15 +40,15 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-import io.servicecomb.saga.omega.context.UniqueIdGenerator;
-import io.servicecomb.saga.omega.transaction.MessageHandler;
-import io.servicecomb.saga.omega.transaction.MessageSender;
-import io.servicecomb.saga.omega.transaction.TxAbortedEvent;
-import io.servicecomb.saga.omega.transaction.TxCompensatedEvent;
-import io.servicecomb.saga.omega.transaction.TxEndedEvent;
-import io.servicecomb.saga.omega.transaction.TxStartedEvent;
-import io.servicecomb.saga.omega.transaction.spring.TransactionInterceptionTest.MessageConfig;
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.context.UniqueIdGenerator;
+import org.apache.servicecomb.saga.omega.transaction.MessageHandler;
+import org.apache.servicecomb.saga.omega.transaction.MessageSender;
+import org.apache.servicecomb.saga.omega.transaction.TxAbortedEvent;
+import org.apache.servicecomb.saga.omega.transaction.TxCompensatedEvent;
+import org.apache.servicecomb.saga.omega.transaction.TxEndedEvent;
+import org.apache.servicecomb.saga.omega.transaction.TxStartedEvent;
+import org.apache.servicecomb.saga.omega.transaction.spring.TransactionInterceptionTest.MessageConfig;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = {TransactionTestMain.class, MessageConfig.class})
diff --git a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionTestMain.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionTestMain.java
similarity index 94%
rename from omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionTestMain.java
rename to omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionTestMain.java
index 7632eb3..ab9bb7e 100644
--- a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionTestMain.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionTestMain.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionalUserService.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionalUserService.java
similarity index 91%
rename from omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionalUserService.java
rename to omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionalUserService.java
index 7538253..0a8cdfd 100644
--- a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionalUserService.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionalUserService.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import io.servicecomb.saga.omega.transaction.annotations.Compensable;
+import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable;
 
 @Component
 class TransactionalUserService {
diff --git a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/User.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/User.java
similarity index 96%
rename from omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/User.java
rename to omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/User.java
index 5af25e4..9b7f474 100644
--- a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/User.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/User.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
 import java.util.Objects;
 
diff --git a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/UserRepository.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/UserRepository.java
similarity index 93%
rename from omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/UserRepository.java
rename to omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/UserRepository.java
index 14f9e95..bcf3e14 100644
--- a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/UserRepository.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/UserRepository.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.spring;
+package org.apache.servicecomb.saga.omega.transaction.spring;
 
 import org.springframework.data.repository.CrudRepository;
 
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/CompensationMessageHandler.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandler.java
similarity index 92%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/CompensationMessageHandler.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandler.java
index edc3243..2e0836e 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/CompensationMessageHandler.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandler.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 
 public class CompensationMessageHandler implements MessageHandler {
   private final MessageSender sender;
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/FailedTransactionInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/FailedTransactionInterceptor.java
similarity index 95%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/FailedTransactionInterceptor.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/FailedTransactionInterceptor.java
index 9c164dd..862efc9 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/FailedTransactionInterceptor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/FailedTransactionInterceptor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 class FailedTransactionInterceptor {
   private final MessageSender sender;
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageDeserializer.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageDeserializer.java
similarity index 94%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageDeserializer.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageDeserializer.java
index e5348f4..23f1126 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageDeserializer.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageDeserializer.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 public interface MessageDeserializer {
   Object[] deserialize(byte[] message);
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageHandler.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageHandler.java
similarity index 94%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageHandler.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageHandler.java
index d867085..ada064e 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageHandler.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 public interface MessageHandler {
   void onReceive(String globalTxId, String localTxId, String parentTxId, String compensationMethod, Object... payloads);
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageSender.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java
similarity index 94%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageSender.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java
index 1cb8362..641fe52 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageSender.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 public interface MessageSender {
   void send(TxEvent event);
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageSerializer.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSerializer.java
similarity index 94%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageSerializer.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSerializer.java
index 2148eb6..7dfe0ca 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/MessageSerializer.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSerializer.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 public interface MessageSerializer {
   byte[] serialize(TxEvent event);
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/OmegaException.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/OmegaException.java
similarity index 94%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/OmegaException.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/OmegaException.java
index a67b2ce..89eb67f 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/OmegaException.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/OmegaException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 public class OmegaException extends RuntimeException {
 
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/PostTransactionInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/PostTransactionInterceptor.java
similarity index 95%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/PostTransactionInterceptor.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/PostTransactionInterceptor.java
index 9ea4191..4197560 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/PostTransactionInterceptor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/PostTransactionInterceptor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 class PostTransactionInterceptor {
   private final MessageSender sender;
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/PreTransactionInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/PreTransactionInterceptor.java
similarity index 95%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/PreTransactionInterceptor.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/PreTransactionInterceptor.java
index a2ea5b0..3280d11 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/PreTransactionInterceptor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/PreTransactionInterceptor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 class PreTransactionInterceptor {
   private final MessageSender sender;
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TransactionAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspect.java
similarity index 91%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TransactionAspect.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspect.java
index 6390bc7..2b68da5 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TransactionAspect.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspect.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Method;
@@ -27,8 +27,8 @@ import org.aspectj.lang.reflect.MethodSignature;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-import io.servicecomb.saga.omega.transaction.annotations.Compensable;
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable;
 
 @Aspect
 public class TransactionAspect {
@@ -45,7 +45,7 @@ public class TransactionAspect {
     this.failedTransactionInterceptor = new FailedTransactionInterceptor(sender);
   }
 
-  @Around("execution(@io.servicecomb.saga.omega.transaction.annotations.Compensable * *(..)) && @annotation(compensable)")
+  @Around("execution(@org.apache.servicecomb.saga.omega.transaction.annotations.Compensable * *(..)) && @annotation(compensable)")
   Object advise(ProceedingJoinPoint joinPoint, Compensable compensable) throws Throwable {
     Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
     LOG.debug("Intercepting compensable method {} with context {}", method.toString(), context);
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxAbortedEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxAbortedEvent.java
similarity index 95%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxAbortedEvent.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxAbortedEvent.java
index 0d7e5ba..0bba8a1 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxAbortedEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxAbortedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxCompensatedEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxCompensatedEvent.java
similarity index 94%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxCompensatedEvent.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxCompensatedEvent.java
index 8d518d6..733e060 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxCompensatedEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxCompensatedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 public class TxCompensatedEvent extends TxEvent {
   public TxCompensatedEvent(String globalTxId, String localTxId, String parentTxId, String compensationMethod) {
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxEndedEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxEndedEvent.java
similarity index 94%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxEndedEvent.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxEndedEvent.java
index 6922f29..b08932c 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxEndedEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxEndedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 public class TxEndedEvent extends TxEvent {
   public TxEndedEvent(String globalTxId, String localTxId, String parentTxId, String compensationMethod) {
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxEvent.java
similarity index 97%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxEvent.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxEvent.java
index a11a9ad..725ef08 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 import java.util.Arrays;
 
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxStartedEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxStartedEvent.java
similarity index 95%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxStartedEvent.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxStartedEvent.java
index 13534ac..d54b061 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/TxStartedEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TxStartedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 public class TxStartedEvent extends TxEvent {
 
diff --git a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/annotations/Compensable.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/Compensable.java
similarity index 94%
rename from omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/annotations/Compensable.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/Compensable.java
index bb86666..0777ce4 100644
--- a/omega/omega-transaction/src/main/java/io/servicecomb/saga/omega/transaction/annotations/Compensable.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/Compensable.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction.annotations;
+package org.apache.servicecomb.saga.omega.transaction.annotations;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/omega/omega-transaction/src/test/java/io/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java
similarity index 95%
rename from omega/omega-transaction/src/test/java/io/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java
rename to omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java
index 1070e59..2ecd82f 100644
--- a/omega/omega-transaction/src/test/java/io/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
 import static org.hamcrest.core.Is.is;
@@ -26,10 +26,9 @@ import static org.mockito.Mockito.verify;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.junit.Test;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-
 public class CompensationMessageHandlerTest {
 
   private final List<TxEvent> events = new ArrayList<>();
diff --git a/omega/omega-transaction/src/test/java/io/servicecomb/saga/omega/transaction/PostTransactionInterceptorTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/PostTransactionInterceptorTest.java
similarity index 97%
rename from omega/omega-transaction/src/test/java/io/servicecomb/saga/omega/transaction/PostTransactionInterceptorTest.java
rename to omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/PostTransactionInterceptorTest.java
index b2e18ab..50a9cae 100644
--- a/omega/omega-transaction/src/test/java/io/servicecomb/saga/omega/transaction/PostTransactionInterceptorTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/PostTransactionInterceptorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
diff --git a/omega/omega-transaction/src/test/java/io/servicecomb/saga/omega/transaction/PreTransactionInterceptorTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/PreTransactionInterceptorTest.java
similarity index 97%
rename from omega/omega-transaction/src/test/java/io/servicecomb/saga/omega/transaction/PreTransactionInterceptorTest.java
rename to omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/PreTransactionInterceptorTest.java
index 5d5d832..0a54e26 100644
--- a/omega/omega-transaction/src/test/java/io/servicecomb/saga/omega/transaction/PreTransactionInterceptorTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/PreTransactionInterceptorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.omega.transaction;
+package org.apache.servicecomb.saga.omega.transaction;
 
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
 import static java.util.Arrays.asList;
diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java
similarity index 91%
rename from omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java
rename to omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java
index 053e3ff..e9aac31 100644
--- a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java
+++ b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java
@@ -16,7 +16,7 @@
  *
  */
 
-package io.servicecomb.saga.omega.transport.resttemplate;
+package org.apache.servicecomb.saga.omega.transport.resttemplate;
 
 import java.util.List;
 
@@ -25,7 +25,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.http.client.ClientHttpRequestInterceptor;
 import org.springframework.web.client.RestTemplate;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 
 @Configuration
 public class RestTemplateConfig {
diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
similarity index 82%
rename from omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
rename to omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
index 35bc9d0..5b4ceda 100644
--- a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
+++ b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
@@ -16,20 +16,16 @@
  *
  */
 
-package io.servicecomb.saga.omega.transport.resttemplate;
-
-import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY;
-import static io.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY;
+package org.apache.servicecomb.saga.omega.transport.resttemplate;
 
 import java.io.IOException;
 
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.springframework.http.HttpRequest;
 import org.springframework.http.client.ClientHttpRequestExecution;
 import org.springframework.http.client.ClientHttpRequestInterceptor;
 import org.springframework.http.client.ClientHttpResponse;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-
 class TransactionClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
 
   private final OmegaContext omegaContext;
@@ -42,8 +38,8 @@ class TransactionClientHttpRequestInterceptor implements ClientHttpRequestInterc
   public ClientHttpResponse intercept(HttpRequest request, byte[] body,
       ClientHttpRequestExecution execution) throws IOException {
 
-    request.getHeaders().add(GLOBAL_TX_ID_KEY, globalTxId());
-    request.getHeaders().add(LOCAL_TX_ID_KEY, localTxId());
+    request.getHeaders().add(OmegaContext.GLOBAL_TX_ID_KEY, globalTxId());
+    request.getHeaders().add(OmegaContext.LOCAL_TX_ID_KEY, localTxId());
     return execution.execute(request, body);
   }
 
diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java
similarity index 81%
rename from omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java
rename to omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java
index d71c558..d83786e 100644
--- a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java
+++ b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java
@@ -18,23 +18,19 @@
  *
  */
 
-package io.servicecomb.saga.omega.transport.resttemplate;
-
-import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY;
-import static io.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY;
+package org.apache.servicecomb.saga.omega.transport.resttemplate;
 
 import java.lang.invoke.MethodHandles;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-
 class TransactionHandlerInterceptor implements HandlerInterceptor {
 
   private static Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -47,13 +43,13 @@ class TransactionHandlerInterceptor implements HandlerInterceptor {
 
   @Override
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
-    String globalTxId = request.getHeader(GLOBAL_TX_ID_KEY);
+    String globalTxId = request.getHeader(OmegaContext.GLOBAL_TX_ID_KEY);
     if (globalTxId == null) {
-      LOG.debug("no such header: {}", GLOBAL_TX_ID_KEY);
+      LOG.debug("no such header: {}", OmegaContext.GLOBAL_TX_ID_KEY);
     } else {
       omegaContext.setGlobalTxId(globalTxId);
       omegaContext.newLocalTxId();
-      omegaContext.setParentTxId(request.getHeader(LOCAL_TX_ID_KEY));
+      omegaContext.setParentTxId(request.getHeader(OmegaContext.LOCAL_TX_ID_KEY));
     }
     return true;
   }
diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/WebConfig.java b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/WebConfig.java
similarity index 92%
rename from omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/WebConfig.java
rename to omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/WebConfig.java
index 7650d3c..255d20b 100644
--- a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/WebConfig.java
+++ b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/WebConfig.java
@@ -18,16 +18,15 @@
  *
  */
 
-package io.servicecomb.saga.omega.transport.resttemplate;
+package org.apache.servicecomb.saga.omega.transport.resttemplate;
 
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-
 @Configuration
 @EnableWebMvc
 public class WebConfig extends WebMvcConfigurerAdapter {
diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/resources/META-INF/spring.factories b/omega/omega-transport/omega-transport-resttemplate/src/main/resources/META-INF/spring.factories
index 7d03c78..00a5c7c 100644
--- a/omega/omega-transport/omega-transport-resttemplate/src/main/resources/META-INF/spring.factories
+++ b/omega/omega-transport/omega-transport-resttemplate/src/main/resources/META-INF/spring.factories
@@ -15,5 +15,5 @@
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-  io.servicecomb.saga.omega.transport.resttemplate.WebConfig,\
-  io.servicecomb.saga.omega.transport.resttemplate.RestTemplateConfig
+  org.apache.servicecomb.saga.omega.transport.resttemplate.WebConfig,\
+  org.apache.servicecomb.saga.omega.transport.resttemplate.RestTemplateConfig
diff --git a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java b/omega/omega-transport/omega-transport-resttemplate/src/test/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java
similarity index 83%
rename from omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java
rename to omega/omega-transport/omega-transport-resttemplate/src/test/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java
index 223b56c..82e74cf 100644
--- a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java
+++ b/omega/omega-transport/omega-transport-resttemplate/src/test/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java
@@ -16,11 +16,9 @@
  *
  */
 
-package io.servicecomb.saga.omega.transport.resttemplate;
+package org.apache.servicecomb.saga.omega.transport.resttemplate;
 
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY;
-import static io.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY;
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
@@ -29,6 +27,8 @@ import static org.mockito.Mockito.when;
 
 import java.io.IOException;
 
+import org.apache.servicecomb.saga.omega.context.IdGenerator;
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -40,9 +40,6 @@ import org.springframework.http.client.ClientHttpRequestExecution;
 import org.springframework.http.client.ClientHttpRequestInterceptor;
 import org.springframework.http.client.ClientHttpResponse;
 
-import io.servicecomb.saga.omega.context.IdGenerator;
-import io.servicecomb.saga.omega.context.OmegaContext;
-
 @SuppressWarnings("unchecked")
 @RunWith(JUnit4.class)
 public class TransactionClientHttpRequestInterceptorTest {
@@ -75,8 +72,8 @@ public class TransactionClientHttpRequestInterceptorTest {
 
     clientHttpRequestInterceptor.intercept(request, null, execution);
 
-    assertThat(request.getHeaders().get(GLOBAL_TX_ID_KEY), contains(globalTxId));
-    assertThat(request.getHeaders().get(LOCAL_TX_ID_KEY), contains(localTxId));
+    assertThat(request.getHeaders().get(OmegaContext.GLOBAL_TX_ID_KEY), contains(globalTxId));
+    assertThat(request.getHeaders().get(OmegaContext.LOCAL_TX_ID_KEY), contains(localTxId));
 
     assertThat(omegaContext.globalTxId(), is(globalTxId));
     assertThat(omegaContext.localTxId(), is(localTxId));
@@ -93,10 +90,10 @@ public class TransactionClientHttpRequestInterceptorTest {
 
     clientHttpRequestInterceptor.intercept(request, null, execution);
 
-    assertThat(request.getHeaders().get(GLOBAL_TX_ID_KEY), contains(globalTxId));
-    assertThat(request.getHeaders().get(LOCAL_TX_ID_KEY), contains(localTxId));
+    assertThat(request.getHeaders().get(OmegaContext.GLOBAL_TX_ID_KEY), contains(globalTxId));
+    assertThat(request.getHeaders().get(OmegaContext.LOCAL_TX_ID_KEY), contains(localTxId));
 
     assertThat(omegaContext.globalTxId(), is(globalTxId));
     assertThat(omegaContext.localTxId(), is(localTxId));
   }
-}
\ No newline at end of file
+}
diff --git a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java b/omega/omega-transport/omega-transport-resttemplate/src/test/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java
similarity index 82%
rename from omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java
rename to omega/omega-transport/omega-transport-resttemplate/src/test/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java
index 4aabddd..6ee816b 100644
--- a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java
+++ b/omega/omega-transport/omega-transport-resttemplate/src/test/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java
@@ -16,10 +16,8 @@
  *
  */
 
-package io.servicecomb.saga.omega.transport.resttemplate;
+package org.apache.servicecomb.saga.omega.transport.resttemplate;
 
-import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY;
-import static io.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.notNullValue;
 import static org.hamcrest.Matchers.nullValue;
@@ -32,12 +30,11 @@ import java.util.UUID;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.junit.Before;
 import org.junit.Test;
 import org.springframework.web.servlet.HandlerInterceptor;
 
-import io.servicecomb.saga.omega.context.OmegaContext;
-
 public class TransactionHandlerInterceptorTest {
 
   private static final String globalTxId = UUID.randomUUID().toString();
@@ -61,8 +58,8 @@ public class TransactionHandlerInterceptorTest {
 
   @Test
   public void setUpOmegaContextInTransactionRequest() throws Exception {
-    when(request.getHeader(GLOBAL_TX_ID_KEY)).thenReturn(globalTxId);
-    when(request.getHeader(LOCAL_TX_ID_KEY)).thenReturn(localTxId);
+    when(request.getHeader(OmegaContext.GLOBAL_TX_ID_KEY)).thenReturn(globalTxId);
+    when(request.getHeader(OmegaContext.LOCAL_TX_ID_KEY)).thenReturn(localTxId);
 
     requestInterceptor.preHandle(request, response, null);
 
@@ -73,8 +70,8 @@ public class TransactionHandlerInterceptorTest {
 
   @Test
   public void doNothingInNonTransactionRequest() throws Exception {
-    when(request.getHeader(GLOBAL_TX_ID_KEY)).thenReturn(null);
-    when(request.getHeader(LOCAL_TX_ID_KEY)).thenReturn(null);
+    when(request.getHeader(OmegaContext.GLOBAL_TX_ID_KEY)).thenReturn(null);
+    when(request.getHeader(OmegaContext.LOCAL_TX_ID_KEY)).thenReturn(null);
 
     requestInterceptor.preHandle(request, response, null);
 
@@ -82,4 +79,4 @@ public class TransactionHandlerInterceptorTest {
     assertThat(omegaContext.parentTxId(), is(nullValue()));
     assertThat(omegaContext.localTxId(), is(nullValue()));
   }
-}
\ No newline at end of file
+}
diff --git a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java b/omega/omega-transport/omega-transport-resttemplate/src/test/java/org/apache/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java
similarity index 93%
rename from omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java
rename to omega/omega-transport/omega-transport-resttemplate/src/test/java/org/apache/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java
index 720eb0b..88ffac2 100644
--- a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java
+++ b/omega/omega-transport/omega-transport-resttemplate/src/test/java/org/apache/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java
@@ -16,7 +16,7 @@
  *
  */
 
-package io.servicecomb.saga.omega.transport.resttemplate;
+package org.apache.servicecomb.saga.omega.transport.resttemplate;
 
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
@@ -32,10 +32,9 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 
+import org.apache.servicecomb.saga.omega.context.UniqueIdGenerator;
 import org.junit.Test;
 
-import io.servicecomb.saga.omega.context.UniqueIdGenerator;
-
 public class UniqueIdGeneratorTest {
 
   private final UniqueIdGenerator idGenerator = new UniqueIdGenerator();
@@ -59,4 +58,4 @@ public class UniqueIdGeneratorTest {
     }
     assertThat(ids.size(), is(nThreads));
   }
-}
\ No newline at end of file
+}
diff --git a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
index 743df4d..0679637 100644
--- a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
+++ b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
@@ -18,7 +18,7 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "io.servicecomb.saga.pack.contract.grpc";
+option java_package = "org.apache.servicecomb.saga.pack.contract.grpc";
 option java_outer_classname = "TxEventProto";
 
 service TxEventService {
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/BackwardRecovery.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/BackwardRecovery.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/BackwardRecovery.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/BackwardRecovery.java
index 587e4c3..e46de2f 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/BackwardRecovery.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/BackwardRecovery.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.lang.invoke.MethodHandles;
 import kamon.annotation.EnableKamon;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/Compensation.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Compensation.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/Compensation.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/Compensation.java
index 68c9caf..f642011 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/Compensation.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Compensation.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface Compensation extends Operation {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/CompensationTaskConsumer.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/CompensationTaskConsumer.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/CompensationTaskConsumer.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/CompensationTaskConsumer.java
index c9375df..736c34d 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/CompensationTaskConsumer.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/CompensationTaskConsumer.java
@@ -15,18 +15,17 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.lang.invoke.MethodHandles;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map;
 
+import org.apache.servicecomb.saga.core.dag.Node;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import io.servicecomb.saga.core.dag.Node;
-
 class CompensationTaskConsumer implements TaskConsumer {
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/CompositeSagaLog.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/CompositeSagaLog.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/CompositeSagaLog.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/CompositeSagaLog.java
index 6d5d1b0..017129a 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/CompositeSagaLog.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/CompositeSagaLog.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/CompositeSagaResponse.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/CompositeSagaResponse.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/CompositeSagaResponse.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/CompositeSagaResponse.java
index 851f826..02ab48c 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/CompositeSagaResponse.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/CompositeSagaResponse.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.util.Collection;
 import java.util.Optional;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/Descriptive.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Descriptive.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/Descriptive.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/Descriptive.java
index 2f6adb8..bd367af 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/Descriptive.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Descriptive.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 interface Descriptive {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/EventContext.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/EventContext.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/EventContext.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/EventContext.java
index e785255..79b0c3e 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/EventContext.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/EventContext.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface EventContext {
   void beginTransaction(SagaRequest request);
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/EventEnvelope.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/EventEnvelope.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/EventEnvelope.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/EventEnvelope.java
index 0910591..9283b33 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/EventEnvelope.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/EventEnvelope.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class EventEnvelope {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/EventStore.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/EventStore.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/EventStore.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/EventStore.java
index 9ad1206..7b7e6e2 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/EventStore.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/EventStore.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface EventStore extends SagaLog, Iterable<SagaEvent> {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/FailedSagaResponse.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/FailedSagaResponse.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/FailedSagaResponse.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/FailedSagaResponse.java
index ba025ea..15d1701 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/FailedSagaResponse.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/FailedSagaResponse.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/Fallback.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Fallback.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/Fallback.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/Fallback.java
index a614242..fca68a0 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/Fallback.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Fallback.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface Fallback extends Operation {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/FallbackPolicy.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/FallbackPolicy.java
similarity index 98%
rename from saga-core/src/main/java/io/servicecomb/saga/core/FallbackPolicy.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/FallbackPolicy.java
index 7257268..48ad67d 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/FallbackPolicy.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/FallbackPolicy.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.lang.invoke.MethodHandles;
 import org.slf4j.Logger;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/ForwardRecovery.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/ForwardRecovery.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/ForwardRecovery.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/ForwardRecovery.java
index a61e905..c783990 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/ForwardRecovery.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/ForwardRecovery.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.lang.invoke.MethodHandles;
 import org.slf4j.Logger;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/GraphBasedSaga.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/GraphBasedSaga.java
similarity index 91%
rename from saga-core/src/main/java/io/servicecomb/saga/core/GraphBasedSaga.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/GraphBasedSaga.java
index 8e17fa9..f4544e3 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/GraphBasedSaga.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/GraphBasedSaga.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.lang.invoke.MethodHandles;
 import java.util.Map;
@@ -26,11 +26,11 @@ import java.util.concurrent.Executors;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import io.servicecomb.saga.core.dag.ByLevelTraveller;
-import io.servicecomb.saga.core.dag.FromLeafTraversalDirection;
-import io.servicecomb.saga.core.dag.FromRootTraversalDirection;
-import io.servicecomb.saga.core.dag.SingleLeafDirectedAcyclicGraph;
-import io.servicecomb.saga.core.dag.TraversalDirection;
+import org.apache.servicecomb.saga.core.dag.ByLevelTraveller;
+import org.apache.servicecomb.saga.core.dag.FromLeafTraversalDirection;
+import org.apache.servicecomb.saga.core.dag.FromRootTraversalDirection;
+import org.apache.servicecomb.saga.core.dag.SingleLeafDirectedAcyclicGraph;
+import org.apache.servicecomb.saga.core.dag.TraversalDirection;
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/IdGenerator.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/IdGenerator.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/IdGenerator.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/IdGenerator.java
index 1119e42..2add260 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/IdGenerator.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/IdGenerator.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.io.Serializable;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/LoggingRecoveryPolicy.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/LoggingRecoveryPolicy.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/LoggingRecoveryPolicy.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/LoggingRecoveryPolicy.java
index 684b5e7..9173eca 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/LoggingRecoveryPolicy.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/LoggingRecoveryPolicy.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.lang.invoke.MethodHandles;
 import kamon.annotation.EnableKamon;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/LongIdGenerator.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/LongIdGenerator.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/LongIdGenerator.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/LongIdGenerator.java
index eaeedf6..6b16075 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/LongIdGenerator.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/LongIdGenerator.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.util.concurrent.atomic.AtomicLong;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/NoOpSagaRequest.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/NoOpSagaRequest.java
similarity index 80%
rename from saga-core/src/main/java/io/servicecomb/saga/core/NoOpSagaRequest.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/NoOpSagaRequest.java
index 954effc..56ad05e 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/NoOpSagaRequest.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/NoOpSagaRequest.java
@@ -15,15 +15,15 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
-
-import static io.servicecomb.saga.core.Compensation.SAGA_END_COMPENSATION;
-import static io.servicecomb.saga.core.Compensation.SAGA_START_COMPENSATION;
-import static io.servicecomb.saga.core.Operation.TYPE_NOP;
-import static io.servicecomb.saga.core.SagaTask.SAGA_END_TASK;
-import static io.servicecomb.saga.core.SagaTask.SAGA_START_TASK;
-import static io.servicecomb.saga.core.Transaction.SAGA_END_TRANSACTION;
-import static io.servicecomb.saga.core.Transaction.SAGA_START_TRANSACTION;
+package org.apache.servicecomb.saga.core;
+
+import static org.apache.servicecomb.saga.core.Compensation.SAGA_END_COMPENSATION;
+import static org.apache.servicecomb.saga.core.Compensation.SAGA_START_COMPENSATION;
+import static org.apache.servicecomb.saga.core.Operation.TYPE_NOP;
+import static org.apache.servicecomb.saga.core.SagaTask.SAGA_END_TASK;
+import static org.apache.servicecomb.saga.core.SagaTask.SAGA_START_TASK;
+import static org.apache.servicecomb.saga.core.Transaction.SAGA_END_TRANSACTION;
+import static org.apache.servicecomb.saga.core.Transaction.SAGA_START_TRANSACTION;
 
 import java.util.Arrays;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/Operation.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Operation.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/Operation.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/Operation.java
index 78f953e..13b6f8a 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/Operation.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Operation.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface Operation {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/PersistentLog.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/PersistentLog.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/PersistentLog.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/PersistentLog.java
index fac559a..26ec4bc 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/PersistentLog.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/PersistentLog.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface PersistentLog {
   void offer(SagaEvent sagaEvent);
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/PersistentStore.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/PersistentStore.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/PersistentStore.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/PersistentStore.java
index bf4831f..a7620b3 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/PersistentStore.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/PersistentStore.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.util.List;
 import java.util.Map;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/RecoveryPolicy.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/RecoveryPolicy.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/RecoveryPolicy.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/RecoveryPolicy.java
index d9a9920..c67d640 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/RecoveryPolicy.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/RecoveryPolicy.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface RecoveryPolicy extends Descriptive {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/RequestProcessTask.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/RequestProcessTask.java
similarity index 98%
rename from saga-core/src/main/java/io/servicecomb/saga/core/RequestProcessTask.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/RequestProcessTask.java
index 0cfaed5..e19c7bf 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/RequestProcessTask.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/RequestProcessTask.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/RestOperation.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/RestOperation.java
similarity index 92%
rename from saga-core/src/main/java/io/servicecomb/saga/core/RestOperation.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/RestOperation.java
index 415f859..5cce22d 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/RestOperation.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/RestOperation.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static java.util.Collections.emptyMap;
 
-import io.servicecomb.saga.core.application.interpreter.RestRequestChecker;
+import org.apache.servicecomb.saga.core.application.interpreter.RestRequestChecker;
 import java.util.Map;
 
 public class RestOperation implements Operation {
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/Saga.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Saga.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/Saga.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/Saga.java
index bc470a8..44f62ea 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/Saga.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Saga.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import kamon.annotation.Segment;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaContext.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaContext.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaContext.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaContext.java
index 1e78cf5..309be44 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaContext.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaContext.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.util.function.Consumer;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaContextImpl.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaContextImpl.java
similarity index 92%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaContextImpl.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaContextImpl.java
index 9798478..610ae27 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaContextImpl.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaContextImpl.java
@@ -15,10 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
-
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
-import static io.servicecomb.saga.core.SagaResponse.NONE_RESPONSE;
+package org.apache.servicecomb.saga.core;
 
 import java.util.Arrays;
 import java.util.HashMap;
@@ -31,7 +28,7 @@ import java.util.concurrent.ConcurrentSkipListSet;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
 
 public class SagaContextImpl implements SagaContext {
 
@@ -97,7 +94,7 @@ public class SagaContextImpl implements SagaContext {
 
   @Override
   public SagaResponse responseOf(String requestId) {
-    return completedTransactions.getOrDefault(requestId, NONE_RESPONSE);
+    return completedTransactions.getOrDefault(requestId, SagaResponse.NONE_RESPONSE);
   }
 
   private List<SagaResponse> responsesOf(String[] parentRequestIds) {
@@ -111,7 +108,7 @@ public class SagaContextImpl implements SagaContext {
     List<SagaResponse> responses = responsesOf(parentRequestIds);
 
     if (responses.isEmpty()) {
-      return EMPTY_RESPONSE;
+      return SagaResponse.EMPTY_RESPONSE;
     }
 
     if (responses.size() == 1) {
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaDefinition.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaDefinition.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaDefinition.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaDefinition.java
index d266217..406c8df 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaDefinition.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaDefinition.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface SagaDefinition {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaEndTask.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEndTask.java
similarity index 91%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaEndTask.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEndTask.java
index 4cb44d3..69daba7 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaEndTask.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEndTask.java
@@ -15,9 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
-
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
+package org.apache.servicecomb.saga.core;
 
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
@@ -37,7 +35,7 @@ public class SagaEndTask implements SagaTask {
   @Override
   public SagaResponse commit(SagaRequest request, SagaResponse parentResponse) {
     sagaLog.offer(new SagaEndedEvent(sagaId, request));
-    return EMPTY_RESPONSE;
+    return SagaResponse.EMPTY_RESPONSE;
   }
 
   @Override
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaEndedEvent.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEndedEvent.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaEndedEvent.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEndedEvent.java
index 19847d2..c6f4f9f 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaEndedEvent.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEndedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class SagaEndedEvent extends SagaEvent {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaEvent.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEvent.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaEvent.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEvent.java
index bd7480e..ceb0ebe 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaEvent.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public abstract class SagaEvent implements Descriptive {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaException.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaException.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaException.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaException.java
index 7149ff2..49ce989 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaException.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class SagaException extends RuntimeException {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaLog.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaLog.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaLog.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaLog.java
index a17bebd..2e07b9f 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaLog.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaLog.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface SagaLog extends PersistentLog {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaRequest.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaRequest.java
similarity index 91%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaRequest.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaRequest.java
index a84d1fd..337abdd 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaRequest.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaRequest.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
-import static io.servicecomb.saga.core.Fallback.NOP_FALLBACK;
+import static org.apache.servicecomb.saga.core.Fallback.NOP_FALLBACK;
 
 public interface SagaRequest {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaRequestImpl.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaRequestImpl.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaRequestImpl.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaRequestImpl.java
index 667be1b..cbb7a23 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaRequestImpl.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaRequestImpl.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
-import static io.servicecomb.saga.core.Fallback.NOP_FALLBACK;
-import static io.servicecomb.saga.core.SagaTask.SAGA_REQUEST_TASK;
+import static org.apache.servicecomb.saga.core.Fallback.NOP_FALLBACK;
 
 import java.util.Arrays;
 
@@ -126,7 +125,7 @@ public class SagaRequestImpl implements SagaRequest {
 
   @Override
   public String task() {
-    return SAGA_REQUEST_TASK;
+    return SagaTask.SAGA_REQUEST_TASK;
   }
 
   @Override
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaResponse.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaResponse.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaResponse.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaResponse.java
index 060323e..ecdfe4a 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaResponse.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaResponse.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface SagaResponse {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaStartFailedException.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaStartFailedException.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaStartFailedException.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaStartFailedException.java
index 595a6d9..0de35da 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaStartFailedException.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaStartFailedException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class SagaStartFailedException extends RuntimeException {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaStartTask.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaStartTask.java
similarity index 93%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaStartTask.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaStartTask.java
index bbbf000..d8a6bd1 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaStartTask.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaStartTask.java
@@ -15,9 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
-
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
+package org.apache.servicecomb.saga.core;
 
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
@@ -43,7 +41,7 @@ public class SagaStartTask implements SagaTask {
     } catch (Exception e) {
       throw new SagaStartFailedException("Failed to persist SagaStartedEvent for " + requestJson, e);
     }
-    return EMPTY_RESPONSE;
+    return SagaResponse.EMPTY_RESPONSE;
   }
 
   @Override
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaStartedEvent.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaStartedEvent.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaStartedEvent.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaStartedEvent.java
index aaa76b6..0d82fee 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaStartedEvent.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaStartedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class SagaStartedEvent extends SagaEvent {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaState.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaState.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaState.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaState.java
index 028cdec..eae3678 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaState.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaState.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 interface SagaState {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaTask.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaTask.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaTask.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaTask.java
index 0acb97c..73efcc0 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaTask.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaTask.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface SagaTask {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SagaTaskFactory.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaTaskFactory.java
similarity index 88%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SagaTaskFactory.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaTaskFactory.java
index 5d69872..0fd2450 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SagaTaskFactory.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SagaTaskFactory.java
@@ -15,11 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
-
-import static io.servicecomb.saga.core.SagaTask.SAGA_END_TASK;
-import static io.servicecomb.saga.core.SagaTask.SAGA_REQUEST_TASK;
-import static io.servicecomb.saga.core.SagaTask.SAGA_START_TASK;
+package org.apache.servicecomb.saga.core;
 
 import java.lang.invoke.MethodHandles;
 import java.util.HashMap;
@@ -48,12 +44,12 @@ public class SagaTaskFactory {
     SagaLog compositeSagaLog = compositeSagaLog(sagaLog, persistentStore);
 
     return new HashMap<String, SagaTask>() {{
-      put(SAGA_START_TASK, new SagaStartTask(sagaId, requestJson, compositeSagaLog));
+      put(SagaTask.SAGA_START_TASK, new SagaStartTask(sagaId, requestJson, compositeSagaLog));
 
       SagaLog retrySagaLog = compositeSagaLog(sagaLog, SagaTaskFactory.this.retrySagaLog);
-      put(SAGA_REQUEST_TASK,
+      put(SagaTask.SAGA_REQUEST_TASK,
           new RequestProcessTask(sagaId, retrySagaLog, new LoggingRecoveryPolicy(recoveryPolicy), fallbackPolicy));
-      put(SAGA_END_TASK, new SagaEndTask(sagaId, retrySagaLog));
+      put(SagaTask.SAGA_END_TASK, new SagaEndTask(sagaId, retrySagaLog));
     }};
   }
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/SuccessfulSagaResponse.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SuccessfulSagaResponse.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/SuccessfulSagaResponse.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/SuccessfulSagaResponse.java
index 92f1053..d69bdcd 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/SuccessfulSagaResponse.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SuccessfulSagaResponse.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class SuccessfulSagaResponse implements SagaResponse {
   private final String body;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/TaskConsumer.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TaskConsumer.java
similarity index 91%
rename from saga-core/src/main/java/io/servicecomb/saga/core/TaskConsumer.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/TaskConsumer.java
index bf5292f..5ae7494 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/TaskConsumer.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TaskConsumer.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.util.Collection;
 
-import io.servicecomb.saga.core.dag.Node;
+import org.apache.servicecomb.saga.core.dag.Node;
 
 interface TaskConsumer {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/TaskRunner.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TaskRunner.java
similarity index 93%
rename from saga-core/src/main/java/io/servicecomb/saga/core/TaskRunner.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/TaskRunner.java
index 66da147..c078001 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/TaskRunner.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TaskRunner.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
-import io.servicecomb.saga.core.dag.Node;
-import io.servicecomb.saga.core.dag.Traveller;
+import org.apache.servicecomb.saga.core.dag.Node;
+import org.apache.servicecomb.saga.core.dag.Traveller;
 
 import java.util.Collection;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/ToJsonFormat.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/ToJsonFormat.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/ToJsonFormat.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/ToJsonFormat.java
index fa74deb..cd6c449 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/ToJsonFormat.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/ToJsonFormat.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface ToJsonFormat {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/Transaction.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Transaction.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/Transaction.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/Transaction.java
index 73f1881..fafb845 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/Transaction.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Transaction.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface Transaction extends Operation {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionAbortedEvent.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionAbortedEvent.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/TransactionAbortedEvent.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionAbortedEvent.java
index 92426e6..b117c94 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionAbortedEvent.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionAbortedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class TransactionAbortedEvent extends SagaEvent {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionCompensatedEvent.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionCompensatedEvent.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/TransactionCompensatedEvent.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionCompensatedEvent.java
index 51b7718..d6ab298 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionCompensatedEvent.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionCompensatedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class TransactionCompensatedEvent extends SagaEvent {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionEndedEvent.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionEndedEvent.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/TransactionEndedEvent.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionEndedEvent.java
index 83c8d34..603c542 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionEndedEvent.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionEndedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class TransactionEndedEvent extends SagaEvent {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionFailedException.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionFailedException.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/TransactionFailedException.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionFailedException.java
index f05802d..b55e01a 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionFailedException.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionFailedException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class TransactionFailedException extends RuntimeException {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionStartedEvent.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionStartedEvent.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/TransactionStartedEvent.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionStartedEvent.java
index f83a2d5..cc35589 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionStartedEvent.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionStartedEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class TransactionStartedEvent extends SagaEvent {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionTaskConsumer.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionTaskConsumer.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/TransactionTaskConsumer.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionTaskConsumer.java
index 77021cb..af2dc74 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/TransactionTaskConsumer.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionTaskConsumer.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
-import io.servicecomb.saga.core.dag.Node;
+import org.apache.servicecomb.saga.core.dag.Node;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -32,6 +32,7 @@ import java.util.concurrent.Future;
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
 import kamon.annotation.Trace;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/Transport.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Transport.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/Transport.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/Transport.java
index 20c45a6..5679e0a 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/Transport.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/Transport.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public interface Transport {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/TransportFailedException.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransportFailedException.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/TransportFailedException.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/TransportFailedException.java
index 3b08385..e01a9d5 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/TransportFailedException.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/TransportFailedException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class TransportFailedException extends RuntimeException {
   public TransportFailedException(String cause) {
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/ActorBasedSaga.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/ActorBasedSaga.java
similarity index 75%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/ActorBasedSaga.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/ActorBasedSaga.java
index fd2b160..bf60f98 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/ActorBasedSaga.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/ActorBasedSaga.java
@@ -15,19 +15,18 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
-
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
+package org.apache.servicecomb.saga.core.actors;
 
 import java.util.concurrent.CompletableFuture;
 
-import io.servicecomb.saga.core.EventContext;
-import io.servicecomb.saga.core.EventStore;
-import io.servicecomb.saga.core.Saga;
-import io.servicecomb.saga.core.SagaEvent;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.actors.messages.TransactMessage;
+import org.apache.servicecomb.saga.core.EventContext;
+import org.apache.servicecomb.saga.core.EventStore;
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.Saga;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.actors.messages.TransactMessage;
+import org.apache.servicecomb.saga.core.SagaEvent;
+
 import akka.actor.ActorRef;
 
 public class ActorBasedSaga implements Saga {
@@ -48,7 +47,7 @@ public class ActorBasedSaga implements Saga {
 
   @Override
   public SagaResponse run() {
-    root.tell(new TransactMessage(SAGA_START_REQUEST, EMPTY_RESPONSE), completionCallback);
+    root.tell(new TransactMessage(NoOpSagaRequest.SAGA_START_REQUEST, SagaResponse.EMPTY_RESPONSE), completionCallback);
 
     return future.join();
   }
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/ActorBasedSagaFactory.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaFactory.java
similarity index 81%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/ActorBasedSagaFactory.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaFactory.java
index 8f8cb7f..8ce22fa 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/ActorBasedSagaFactory.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaFactory.java
@@ -15,21 +15,21 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
+package org.apache.servicecomb.saga.core.actors;
 
 import static akka.actor.ActorRef.noSender;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
 
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 
-import io.servicecomb.saga.core.EventStore;
-import io.servicecomb.saga.core.PersistentStore;
-import io.servicecomb.saga.core.SagaDefinition;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SagaTaskFactory;
-import io.servicecomb.saga.core.application.SagaFactory;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.core.EventStore;
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.application.SagaFactory;
+import org.apache.servicecomb.saga.core.PersistentStore;
+import org.apache.servicecomb.saga.core.SagaDefinition;
+import org.apache.servicecomb.saga.core.SagaTaskFactory;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
 import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
 import scala.concurrent.Await;
@@ -64,7 +64,7 @@ public class ActorBasedSagaFactory implements SagaFactory {
 
     completionCallback.tell(context, noSender());
     return new ActorBasedSaga(
-        context.actorOf(SAGA_START_REQUEST.id()),
+        context.actorOf(NoOpSagaRequest.SAGA_START_REQUEST.id()),
         completionCallback,
         future,
         sagaLog,
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/CompletionCallbackActor.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/CompletionCallbackActor.java
similarity index 80%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/CompletionCallbackActor.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/CompletionCallbackActor.java
index dfda23e..7cee4d3 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/CompletionCallbackActor.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/CompletionCallbackActor.java
@@ -15,17 +15,16 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
-
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_END_REQUEST;
+package org.apache.servicecomb.saga.core.actors;
 
 import java.util.concurrent.CompletableFuture;
 
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.actors.messages.AbortMessage;
-import io.servicecomb.saga.core.actors.messages.CompensateMessage;
-import io.servicecomb.saga.core.actors.messages.FailMessage;
-import io.servicecomb.saga.core.actors.messages.TransactMessage;
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.actors.messages.AbortMessage;
+import org.apache.servicecomb.saga.core.actors.messages.CompensateMessage;
+import org.apache.servicecomb.saga.core.actors.messages.FailMessage;
+import org.apache.servicecomb.saga.core.actors.messages.TransactMessage;
 import akka.actor.AbstractLoggingActor;
 import akka.actor.Props;
 
@@ -58,7 +57,7 @@ class CompletionCallbackActor extends AbstractLoggingActor {
 
   private void onAbort(RequestActorContext context, AbortMessage message) {
     log().info("saga actor: received abort message of {}", message.response());
-    context.actorOf(SAGA_END_REQUEST.id()).tell(new CompensateMessage(message.response()), self());
+    context.actorOf(NoOpSagaRequest.SAGA_END_REQUEST.id()).tell(new CompensateMessage(message.response()), self());
   }
 
   private void end(RequestActorContext context, SagaResponse response) {
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/EventContextImpl.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/EventContextImpl.java
similarity index 76%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/EventContextImpl.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/EventContextImpl.java
index 8a1562d..21a2928 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/EventContextImpl.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/EventContextImpl.java
@@ -15,17 +15,17 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
+package org.apache.servicecomb.saga.core.actors;
 
 import static akka.actor.ActorRef.noSender;
 
-import io.servicecomb.saga.core.EventContext;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.actors.messages.AbortRecoveryMessage;
-import io.servicecomb.saga.core.actors.messages.CompensationRecoveryMessage;
-import io.servicecomb.saga.core.actors.messages.Message;
-import io.servicecomb.saga.core.actors.messages.TransactionRecoveryMessage;
+import org.apache.servicecomb.saga.core.EventContext;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.actors.messages.AbortRecoveryMessage;
+import org.apache.servicecomb.saga.core.actors.messages.CompensationRecoveryMessage;
+import org.apache.servicecomb.saga.core.actors.messages.TransactionRecoveryMessage;
+import org.apache.servicecomb.saga.core.actors.messages.Message;
 
 public class EventContextImpl implements EventContext {
   private final RequestActorContext context;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/RequestActor.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActor.java
similarity index 85%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/RequestActor.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActor.java
index f46e929..055174e 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/RequestActor.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActor.java
@@ -15,10 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
-
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
-import static io.servicecomb.saga.core.SagaResponse.NONE_RESPONSE;
+package org.apache.servicecomb.saga.core.actors;
 
 import java.util.ArrayList;
 import java.util.LinkedList;
@@ -26,20 +23,21 @@ import java.util.List;
 import java.util.function.Consumer;
 import java.util.function.Supplier;
 
-import io.servicecomb.saga.core.CompositeSagaResponse;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SagaStartFailedException;
-import io.servicecomb.saga.core.SagaTask;
-import io.servicecomb.saga.core.TransactionFailedException;
-import io.servicecomb.saga.core.actors.messages.AbortMessage;
-import io.servicecomb.saga.core.actors.messages.AbortRecoveryMessage;
-import io.servicecomb.saga.core.actors.messages.CompensateMessage;
-import io.servicecomb.saga.core.actors.messages.CompensationRecoveryMessage;
-import io.servicecomb.saga.core.actors.messages.FailMessage;
-import io.servicecomb.saga.core.actors.messages.Message;
-import io.servicecomb.saga.core.actors.messages.TransactMessage;
-import io.servicecomb.saga.core.actors.messages.TransactionRecoveryMessage;
+import org.apache.servicecomb.saga.core.CompositeSagaResponse;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SagaStartFailedException;
+import org.apache.servicecomb.saga.core.SagaTask;
+import org.apache.servicecomb.saga.core.TransactionFailedException;
+import org.apache.servicecomb.saga.core.actors.messages.AbortMessage;
+import org.apache.servicecomb.saga.core.actors.messages.AbortRecoveryMessage;
+import org.apache.servicecomb.saga.core.actors.messages.CompensationRecoveryMessage;
+import org.apache.servicecomb.saga.core.actors.messages.FailMessage;
+import org.apache.servicecomb.saga.core.actors.messages.Message;
+import org.apache.servicecomb.saga.core.actors.messages.TransactMessage;
+import org.apache.servicecomb.saga.core.actors.messages.TransactionRecoveryMessage;
+import org.apache.servicecomb.saga.core.actors.messages.CompensateMessage;
+
 import akka.actor.AbstractLoggingActor;
 import akka.actor.ActorRef;
 import akka.actor.Props;
@@ -151,7 +149,7 @@ public class RequestActor extends AbstractLoggingActor {
         sendToChildren(new TransactMessage(request, sagaResponse));
         getContext().become(transacted);
       } else {
-        sendToChildren(new TransactMessage(request, NONE_RESPONSE));
+        sendToChildren(new TransactMessage(request, SagaResponse.NONE_RESPONSE));
         getContext().become(aborted);
       }
     } catch (SagaStartFailedException e) {
@@ -182,7 +180,7 @@ public class RequestActor extends AbstractLoggingActor {
 
   private SagaResponse responseOf(List<SagaResponse> responseContexts) {
     if (responseContexts.isEmpty()) {
-      return EMPTY_RESPONSE;
+      return SagaResponse.EMPTY_RESPONSE;
     }
 
     if (responseContexts.size() == 1) {
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/RequestActorBuilder.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActorBuilder.java
similarity index 75%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/RequestActorBuilder.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActorBuilder.java
index 807f8c1..5004b4e 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/RequestActorBuilder.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActorBuilder.java
@@ -15,17 +15,15 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
-
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_END_REQUEST;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
+package org.apache.servicecomb.saga.core.actors;
 
 import java.util.Map;
 import java.util.Set;
 
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaTask;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaTask;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
 import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
 import akka.actor.Props;
@@ -53,8 +51,8 @@ public class RequestActorBuilder {
     linkActorsById(rootActor, requests, context);
     addLeafToChildless(leafActor, requests, context);
 
-    context.addParent(SAGA_START_REQUEST.id(), sagaActor);
-    context.addChild(SAGA_END_REQUEST.id(), sagaActor);
+    context.addParent(NoOpSagaRequest.SAGA_START_REQUEST.id(), sagaActor);
+    context.addChild(NoOpSagaRequest.SAGA_END_REQUEST.id(), sagaActor);
     return context;
   }
 
@@ -62,7 +60,7 @@ public class RequestActorBuilder {
     for (SagaRequest request : requests) {
       if (isOrphan(request)) {
         context.addParent(request.id(), rootActor);
-        context.addChild(SAGA_START_REQUEST.id(), context.actorOf(request.id()));
+        context.addChild(NoOpSagaRequest.SAGA_START_REQUEST.id(), context.actorOf(request.id()));
       } else {
         for (String parent : request.parents()) {
           context.addParent(request.id(), context.actorOf(parent));
@@ -86,23 +84,25 @@ public class RequestActorBuilder {
   private void addLeafToChildless(ActorRef leafActor, SagaRequest[] requests, RequestActorContext context) {
     for (SagaRequest request : requests) {
       if (context.childrenOf(request).isEmpty()) {
-        context.addParent(SAGA_END_REQUEST.id(), context.actorOf(request.id()));
+        context.addParent(NoOpSagaRequest.SAGA_END_REQUEST.id(), context.actorOf(request.id()));
         context.addChild(request.id(), leafActor);
       }
     }
   }
 
   private ActorRef rootActor(RequestActorContext context, Map<String, SagaTask> tasks) {
-    Props root = RequestActor.props(context, tasks.get(SAGA_START_REQUEST.task()), SAGA_START_REQUEST);
+    Props root = RequestActor.props(context, tasks.get(
+        NoOpSagaRequest.SAGA_START_REQUEST.task()), NoOpSagaRequest.SAGA_START_REQUEST);
     ActorRef actor = actorSystem.actorOf(root);
-    context.addActor(SAGA_START_REQUEST.id(), actor);
+    context.addActor(NoOpSagaRequest.SAGA_START_REQUEST.id(), actor);
     return actor;
   }
 
   private ActorRef leafActor(RequestActorContext context, Map<String, SagaTask> tasks) {
-    Props leaf = RequestActor.props(context, tasks.get(SAGA_END_REQUEST.task()), SAGA_END_REQUEST);
+    Props leaf = RequestActor.props(context, tasks.get(
+        NoOpSagaRequest.SAGA_END_REQUEST.task()), NoOpSagaRequest.SAGA_END_REQUEST);
     ActorRef actor = actorSystem.actorOf(leaf);
-    context.addActor(SAGA_END_REQUEST.id(), actor);
+    context.addActor(NoOpSagaRequest.SAGA_END_REQUEST.id(), actor);
     return actor;
   }
 }
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/RequestActorContext.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActorContext.java
similarity index 91%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/RequestActorContext.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActorContext.java
index ee561c6..2e3149d 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/RequestActorContext.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActorContext.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
+package org.apache.servicecomb.saga.core.actors;
 
 import static java.util.Collections.emptyList;
 
@@ -27,9 +27,9 @@ import java.util.Map;
 import java.util.Set;
 import java.util.function.Consumer;
 
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
 import akka.actor.ActorRef;
 
 class RequestActorContext {
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/AbortMessage.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/AbortMessage.java
similarity index 86%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/AbortMessage.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/AbortMessage.java
index 206683f..f23a079 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/AbortMessage.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/AbortMessage.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors.messages;
+package org.apache.servicecomb.saga.core.actors.messages;
 
-import io.servicecomb.saga.core.FailedSagaResponse;
-import io.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.FailedSagaResponse;
+import org.apache.servicecomb.saga.core.SagaResponse;
 
 public class AbortMessage implements Message {
   private final SagaResponse response;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/AbortRecoveryMessage.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/AbortRecoveryMessage.java
similarity index 90%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/AbortRecoveryMessage.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/AbortRecoveryMessage.java
index ab0c991..951157d 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/AbortRecoveryMessage.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/AbortRecoveryMessage.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors.messages;
+package org.apache.servicecomb.saga.core.actors.messages;
 
-import io.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SagaResponse;
 
 public class AbortRecoveryMessage implements Message {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/CompensateMessage.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/CompensateMessage.java
similarity index 90%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/CompensateMessage.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/CompensateMessage.java
index 0baa14a..5fd0701 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/CompensateMessage.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/CompensateMessage.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors.messages;
+package org.apache.servicecomb.saga.core.actors.messages;
 
-import io.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SagaResponse;
 
 public class CompensateMessage implements Message {
   private final SagaResponse response;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/CompensationRecoveryMessage.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/CompensationRecoveryMessage.java
similarity index 93%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/CompensationRecoveryMessage.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/CompensationRecoveryMessage.java
index 5cc4c32..421a092 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/CompensationRecoveryMessage.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/CompensationRecoveryMessage.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors.messages;
+package org.apache.servicecomb.saga.core.actors.messages;
 
 public class CompensationRecoveryMessage implements Message {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/FailMessage.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/FailMessage.java
similarity index 85%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/FailMessage.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/FailMessage.java
index e26d477..7a80ecb 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/FailMessage.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/FailMessage.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors.messages;
+package org.apache.servicecomb.saga.core.actors.messages;
 
-import io.servicecomb.saga.core.FailedSagaResponse;
-import io.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.FailedSagaResponse;
+import org.apache.servicecomb.saga.core.SagaResponse;
 
 public class FailMessage implements Message {
   private final SagaResponse response;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/Message.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/Message.java
similarity index 93%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/Message.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/Message.java
index 319e394..3ed8187 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/Message.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/Message.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors.messages;
+package org.apache.servicecomb.saga.core.actors.messages;
 
 public interface Message {
 }
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/TransactMessage.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/TransactMessage.java
similarity index 87%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/TransactMessage.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/TransactMessage.java
index 7fdf718..e4c57a2 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/TransactMessage.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/TransactMessage.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors.messages;
+package org.apache.servicecomb.saga.core.actors.messages;
 
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
 
 public class TransactMessage implements Message {
   private final SagaRequest request;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/TransactionRecoveryMessage.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/TransactionRecoveryMessage.java
similarity index 90%
rename from saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/TransactionRecoveryMessage.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/TransactionRecoveryMessage.java
index 99007b0..26ba05b 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/actors/messages/TransactionRecoveryMessage.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/actors/messages/TransactionRecoveryMessage.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors.messages;
+package org.apache.servicecomb.saga.core.actors.messages;
 
-import io.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SagaResponse;
 
 public class TransactionRecoveryMessage implements Message {
   private final SagaResponse response;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/application/SagaExecutionComponent.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/application/SagaExecutionComponent.java
similarity index 81%
rename from saga-core/src/main/java/io/servicecomb/saga/core/application/SagaExecutionComponent.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/application/SagaExecutionComponent.java
index 9289c0e..7a600d7 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/application/SagaExecutionComponent.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/application/SagaExecutionComponent.java
@@ -15,23 +15,23 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.application;
+package org.apache.servicecomb.saga.core.application;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.UUID;
 
-import io.servicecomb.saga.core.EventEnvelope;
-import io.servicecomb.saga.core.EventStore;
-import io.servicecomb.saga.core.PersistentStore;
-import io.servicecomb.saga.core.Saga;
-import io.servicecomb.saga.core.SagaDefinition;
-import io.servicecomb.saga.core.SagaEvent;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.ToJsonFormat;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
-import io.servicecomb.saga.infrastructure.EmbeddedEventStore;
+import org.apache.servicecomb.saga.core.EventEnvelope;
+import org.apache.servicecomb.saga.core.EventStore;
+import org.apache.servicecomb.saga.core.Saga;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.ToJsonFormat;
+import org.apache.servicecomb.saga.core.PersistentStore;
+import org.apache.servicecomb.saga.core.SagaDefinition;
+import org.apache.servicecomb.saga.core.SagaEvent;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.infrastructure.EmbeddedEventStore;
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/application/SagaFactory.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/application/SagaFactory.java
similarity index 82%
rename from saga-core/src/main/java/io/servicecomb/saga/core/application/SagaFactory.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/application/SagaFactory.java
index b9e9958..b60b5e7 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/application/SagaFactory.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/application/SagaFactory.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.application;
+package org.apache.servicecomb.saga.core.application;
 
-import io.servicecomb.saga.core.EventStore;
-import io.servicecomb.saga.core.Saga;
-import io.servicecomb.saga.core.SagaDefinition;
+import org.apache.servicecomb.saga.core.EventStore;
+import org.apache.servicecomb.saga.core.Saga;
+import org.apache.servicecomb.saga.core.SagaDefinition;
 
 public interface SagaFactory {
   Saga createSaga(String requestJson, String sagaId, EventStore sagaLog, SagaDefinition definition);
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/application/interpreter/FromJsonFormat.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/application/interpreter/FromJsonFormat.java
similarity index 93%
rename from saga-core/src/main/java/io/servicecomb/saga/core/application/interpreter/FromJsonFormat.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/application/interpreter/FromJsonFormat.java
index dfff332..ccfb408 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/application/interpreter/FromJsonFormat.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/application/interpreter/FromJsonFormat.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.application.interpreter;
+package org.apache.servicecomb.saga.core.application.interpreter;
 
 public interface FromJsonFormat<T> {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/application/interpreter/RestRequestChecker.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/application/interpreter/RestRequestChecker.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/application/interpreter/RestRequestChecker.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/application/interpreter/RestRequestChecker.java
index 01ae422..7a65e48 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/application/interpreter/RestRequestChecker.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/application/interpreter/RestRequestChecker.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.application.interpreter;
+package org.apache.servicecomb.saga.core.application.interpreter;
 
 import static java.util.Arrays.asList;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/ByLevelTraveller.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/ByLevelTraveller.java
similarity index 98%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/ByLevelTraveller.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/ByLevelTraveller.java
index e31a5a2..22bc874 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/ByLevelTraveller.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/ByLevelTraveller.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.Collection;
 import java.util.HashMap;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/FromLeafTraversalDirection.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/FromLeafTraversalDirection.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/FromLeafTraversalDirection.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/FromLeafTraversalDirection.java
index 691f889..d97c40f 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/FromLeafTraversalDirection.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/FromLeafTraversalDirection.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.Set;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/FromRootTraversalDirection.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/FromRootTraversalDirection.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/FromRootTraversalDirection.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/FromRootTraversalDirection.java
index adf1bea..8c664ac 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/FromRootTraversalDirection.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/FromRootTraversalDirection.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.Set;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphBasedSagaFactory.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphBasedSagaFactory.java
similarity index 77%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphBasedSagaFactory.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphBasedSagaFactory.java
index fa31973..2048383 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphBasedSagaFactory.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphBasedSagaFactory.java
@@ -15,24 +15,24 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.Set;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import io.servicecomb.saga.core.EventStore;
-import io.servicecomb.saga.core.GraphBasedSaga;
-import io.servicecomb.saga.core.PersistentStore;
-import io.servicecomb.saga.core.Saga;
-import io.servicecomb.saga.core.SagaContext;
-import io.servicecomb.saga.core.SagaContextImpl;
-import io.servicecomb.saga.core.SagaDefinition;
-import io.servicecomb.saga.core.SagaTaskFactory;
-import io.servicecomb.saga.core.application.SagaFactory;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
-import io.servicecomb.saga.infrastructure.ContextAwareEventStore;
+import org.apache.servicecomb.saga.core.EventStore;
+import org.apache.servicecomb.saga.core.GraphBasedSaga;
+import org.apache.servicecomb.saga.core.Saga;
+import org.apache.servicecomb.saga.core.SagaContext;
+import org.apache.servicecomb.saga.core.SagaContextImpl;
+import org.apache.servicecomb.saga.core.application.SagaFactory;
+import org.apache.servicecomb.saga.infrastructure.ContextAwareEventStore;
+import org.apache.servicecomb.saga.core.PersistentStore;
+import org.apache.servicecomb.saga.core.SagaDefinition;
+import org.apache.servicecomb.saga.core.SagaTaskFactory;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
 
 public class GraphBasedSagaFactory implements SagaFactory {
   private final AtomicBoolean isRunning = new AtomicBoolean(true);
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphBuilder.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphBuilder.java
similarity index 94%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphBuilder.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphBuilder.java
index 64e8a90..578cbb9 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphBuilder.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphBuilder.java
@@ -15,15 +15,16 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
-import io.servicecomb.saga.core.NoOpSagaRequest;
-import io.servicecomb.saga.core.SagaException;
-import io.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.SagaException;
+import org.apache.servicecomb.saga.core.SagaRequest;
+
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphCycleDetector.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphCycleDetector.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphCycleDetector.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphCycleDetector.java
index b52d719..9b12bc8 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphCycleDetector.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphCycleDetector.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.Set;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphCycleDetectorImpl.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphCycleDetectorImpl.java
similarity index 98%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphCycleDetectorImpl.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphCycleDetectorImpl.java
index d9a7cde..6011a98 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/GraphCycleDetectorImpl.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphCycleDetectorImpl.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.HashMap;
 import java.util.HashSet;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/Node.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/Node.java
similarity index 97%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/Node.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/Node.java
index 65bd586..0b3be0a 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/Node.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/Node.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.Collection;
 import java.util.HashSet;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/SingleLeafDirectedAcyclicGraph.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/SingleLeafDirectedAcyclicGraph.java
similarity index 96%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/SingleLeafDirectedAcyclicGraph.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/SingleLeafDirectedAcyclicGraph.java
index 375892e..cf0d19b 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/SingleLeafDirectedAcyclicGraph.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/SingleLeafDirectedAcyclicGraph.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 public class SingleLeafDirectedAcyclicGraph<T> {
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/Traveller.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/Traveller.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/Traveller.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/Traveller.java
index a501993..e44848b 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/Traveller.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/Traveller.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.Collection;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/core/dag/TraversalDirection.java b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/TraversalDirection.java
similarity index 95%
rename from saga-core/src/main/java/io/servicecomb/saga/core/dag/TraversalDirection.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/TraversalDirection.java
index de4c123..22f7343 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/core/dag/TraversalDirection.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/TraversalDirection.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.Set;
 
diff --git a/saga-core/src/main/java/io/servicecomb/saga/infrastructure/ContextAwareEventStore.java b/saga-core/src/main/java/org/apache/servicecomb/saga/infrastructure/ContextAwareEventStore.java
similarity index 85%
rename from saga-core/src/main/java/io/servicecomb/saga/infrastructure/ContextAwareEventStore.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/infrastructure/ContextAwareEventStore.java
index 2c5a1e2..40fa71d 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/infrastructure/ContextAwareEventStore.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/infrastructure/ContextAwareEventStore.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.infrastructure;
+package org.apache.servicecomb.saga.infrastructure;
 
 import java.util.Iterator;
 
-import io.servicecomb.saga.core.EventEnvelope;
-import io.servicecomb.saga.core.EventStore;
-import io.servicecomb.saga.core.SagaContext;
-import io.servicecomb.saga.core.SagaEvent;
+import org.apache.servicecomb.saga.core.EventEnvelope;
+import org.apache.servicecomb.saga.core.EventStore;
+import org.apache.servicecomb.saga.core.SagaContext;
+import org.apache.servicecomb.saga.core.SagaEvent;
 
 public class ContextAwareEventStore implements EventStore {
   private final EventStore eventStore;
diff --git a/saga-core/src/main/java/io/servicecomb/saga/infrastructure/EmbeddedEventStore.java b/saga-core/src/main/java/org/apache/servicecomb/saga/infrastructure/EmbeddedEventStore.java
similarity index 89%
rename from saga-core/src/main/java/io/servicecomb/saga/infrastructure/EmbeddedEventStore.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/infrastructure/EmbeddedEventStore.java
index f217df4..d342264 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/infrastructure/EmbeddedEventStore.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/infrastructure/EmbeddedEventStore.java
@@ -15,20 +15,19 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.infrastructure;
+package org.apache.servicecomb.saga.infrastructure;
 
 import java.lang.invoke.MethodHandles;
 import java.util.Iterator;
 import java.util.Queue;
 import java.util.concurrent.LinkedBlockingQueue;
 
+import org.apache.servicecomb.saga.core.EventEnvelope;
+import org.apache.servicecomb.saga.core.EventStore;
+import org.apache.servicecomb.saga.core.SagaEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import io.servicecomb.saga.core.EventEnvelope;
-import io.servicecomb.saga.core.EventStore;
-import io.servicecomb.saga.core.SagaEvent;
-
 public class EmbeddedEventStore implements EventStore {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
   private final Queue<SagaEvent> events = new LinkedBlockingQueue<>();
diff --git a/saga-core/src/main/java/io/servicecomb/saga/transports/RestTransport.java b/saga-core/src/main/java/org/apache/servicecomb/saga/transports/RestTransport.java
similarity index 86%
rename from saga-core/src/main/java/io/servicecomb/saga/transports/RestTransport.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/transports/RestTransport.java
index 77aa844..3d5bda3 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/transports/RestTransport.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/transports/RestTransport.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.transports;
+package org.apache.servicecomb.saga.transports;
 
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.Transport;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.Transport;
 import java.util.Map;
 
 public interface RestTransport extends Transport {
diff --git a/saga-core/src/main/java/io/servicecomb/saga/transports/TransportFactory.java b/saga-core/src/main/java/org/apache/servicecomb/saga/transports/TransportFactory.java
similarity index 94%
rename from saga-core/src/main/java/io/servicecomb/saga/transports/TransportFactory.java
rename to saga-core/src/main/java/org/apache/servicecomb/saga/transports/TransportFactory.java
index c4a6843..b34b5bd 100644
--- a/saga-core/src/main/java/io/servicecomb/saga/transports/TransportFactory.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/transports/TransportFactory.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.transports;
+package org.apache.servicecomb.saga.transports;
 
 public interface TransportFactory {
 
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/BackwardRecoveryTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/BackwardRecoveryTest.java
similarity index 98%
rename from saga-core/src/test/java/io/servicecomb/saga/core/BackwardRecoveryTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/BackwardRecoveryTest.java
index d5c22c7..4f03992 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/BackwardRecoveryTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/BackwardRecoveryTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
 import static org.mockito.Mockito.doThrow;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/CompensationImpl.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/CompensationImpl.java
similarity index 96%
rename from saga-core/src/test/java/io/servicecomb/saga/core/CompensationImpl.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/CompensationImpl.java
index 00ed195..c974bc4 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/CompensationImpl.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/CompensationImpl.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.util.Map;
 
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/CompositeSagaLogTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/CompositeSagaLogTest.java
similarity index 97%
rename from saga-core/src/test/java/io/servicecomb/saga/core/CompositeSagaLogTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/CompositeSagaLogTest.java
index 8e8e2ae..c7dea51 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/CompositeSagaLogTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/CompositeSagaLogTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
 import static org.mockito.Mockito.doThrow;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/CompositeSagaResponseTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/CompositeSagaResponseTest.java
similarity index 98%
rename from saga-core/src/test/java/io/servicecomb/saga/core/CompositeSagaResponseTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/CompositeSagaResponseTest.java
index 9a019db..885224f 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/CompositeSagaResponseTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/CompositeSagaResponseTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static java.util.Arrays.asList;
 import static org.hamcrest.core.Is.is;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/DummyEvent.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/DummyEvent.java
similarity index 95%
rename from saga-core/src/test/java/io/servicecomb/saga/core/DummyEvent.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/DummyEvent.java
index 1ae7777..c775afe 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/DummyEvent.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/DummyEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class DummyEvent extends SagaEvent {
 
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/FallbackPolicyTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/FallbackPolicyTest.java
similarity index 98%
rename from saga-core/src/test/java/io/servicecomb/saga/core/FallbackPolicyTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/FallbackPolicyTest.java
index cbf5cb2..a2d1f32 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/FallbackPolicyTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/FallbackPolicyTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
 import static org.hamcrest.core.Is.is;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/ForwardRecoveryTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/ForwardRecoveryTest.java
similarity index 98%
rename from saga-core/src/test/java/io/servicecomb/saga/core/ForwardRecoveryTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/ForwardRecoveryTest.java
index 4f507ca..e765170 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/ForwardRecoveryTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/ForwardRecoveryTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/LongIdGeneratorTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/LongIdGeneratorTest.java
similarity index 96%
rename from saga-core/src/test/java/io/servicecomb/saga/core/LongIdGeneratorTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/LongIdGeneratorTest.java
index 588e57c..775866b 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/LongIdGeneratorTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/LongIdGeneratorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/RestOperationTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/RestOperationTest.java
similarity index 98%
rename from saga-core/src/test/java/io/servicecomb/saga/core/RestOperationTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/RestOperationTest.java
index 100fcb2..7f1990d 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/RestOperationTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/RestOperationTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
 import static java.util.Collections.emptyMap;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/RetrySagaLogTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/RetrySagaLogTest.java
similarity index 95%
rename from saga-core/src/test/java/io/servicecomb/saga/core/RetrySagaLogTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/RetrySagaLogTest.java
index d5e6b4f..6da8f16 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/RetrySagaLogTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/RetrySagaLogTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 
 import static org.awaitility.Awaitility.await;
@@ -33,7 +33,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.junit.Test;
 
-import io.servicecomb.saga.core.SagaTaskFactory.RetrySagaLog;
+import org.apache.servicecomb.saga.core.SagaTaskFactory.RetrySagaLog;
 
 public class RetrySagaLogTest {
 
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/SagaEndTaskTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaEndTaskTest.java
similarity index 97%
rename from saga-core/src/test/java/io/servicecomb/saga/core/SagaEndTaskTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaEndTaskTest.java
index 9f8dffa..22f5fa1 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/SagaEndTaskTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaEndTaskTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/SagaEventMatcher.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaEventMatcher.java
similarity index 98%
rename from saga-core/src/test/java/io/servicecomb/saga/core/SagaEventMatcher.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaEventMatcher.java
index 4c25c01..7e8289c 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/SagaEventMatcher.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaEventMatcher.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.util.Objects;
 
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/SagaExecutionComponentTestBase.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaExecutionComponentTestBase.java
similarity index 82%
rename from saga-core/src/test/java/io/servicecomb/saga/core/SagaExecutionComponentTestBase.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaExecutionComponentTestBase.java
index 47b1f2d..b9e893f 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/SagaExecutionComponentTestBase.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaExecutionComponentTestBase.java
@@ -15,11 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_END_REQUEST;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
-import static io.servicecomb.saga.core.Operation.TYPE_REST;
+import static org.apache.servicecomb.saga.core.Operation.TYPE_REST;
 import static java.util.Collections.emptyMap;
 import static java.util.Collections.singletonList;
 import static java.util.Collections.singletonMap;
@@ -36,6 +34,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.CompletableFuture;
 
+import org.apache.servicecomb.saga.core.application.SagaFactory;
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
 import org.hamcrest.TypeSafeMatcher;
@@ -43,10 +42,9 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import io.servicecomb.saga.core.application.SagaExecutionComponent;
-import io.servicecomb.saga.core.application.SagaFactory;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
-import io.servicecomb.saga.infrastructure.EmbeddedEventStore;
+import org.apache.servicecomb.saga.core.application.SagaExecutionComponent;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.infrastructure.EmbeddedEventStore;
 
 @SuppressWarnings("unchecked")
 public abstract class SagaExecutionComponentTestBase {
@@ -150,14 +148,14 @@ public abstract class SagaExecutionComponentTestBase {
 
   @Test
   public void recoverSagaWithEventsFromEventStore() throws IOException {
-    eventStore.offer(new SagaStartedEvent(sagaId, sagaJson, SAGA_START_REQUEST));
+    eventStore.offer(new SagaStartedEvent(sagaId, sagaJson, NoOpSagaRequest.SAGA_START_REQUEST));
     coordinator.reanimate();
 
     assertThat(eventStore, contains(
-        eventWith(SAGA_START_REQUEST, SagaStartedEvent.class),
+        eventWith(NoOpSagaRequest.SAGA_START_REQUEST, SagaStartedEvent.class),
         eventWith(request1, TransactionStartedEvent.class),
         eventWith(request1, TransactionEndedEvent.class),
-        eventWith(SAGA_END_REQUEST, SagaEndedEvent.class)
+        eventWith(NoOpSagaRequest.SAGA_END_REQUEST, SagaEndedEvent.class)
     ));
   }
 
@@ -167,10 +165,10 @@ public abstract class SagaExecutionComponentTestBase {
 
     assertThat(response, is(SagaResponse.EMPTY_RESPONSE));
     assertThat(eventStore, contains(
-        eventWith(SAGA_START_REQUEST, SagaStartedEvent.class),
+        eventWith(NoOpSagaRequest.SAGA_START_REQUEST, SagaStartedEvent.class),
         eventWith(request1, TransactionStartedEvent.class),
         eventWith(request1, TransactionEndedEvent.class),
-        eventWith(SAGA_END_REQUEST, SagaEndedEvent.class)
+        eventWith(NoOpSagaRequest.SAGA_END_REQUEST, SagaEndedEvent.class)
     ));
   }
 
@@ -182,33 +180,33 @@ public abstract class SagaExecutionComponentTestBase {
     waitAtMost(2, SECONDS).until(() -> eventStore.size() == 8);
 
     assertThat(eventStore, containsInAnyOrder(
-        eventWith(SAGA_START_REQUEST, SagaStartedEvent.class),
+        eventWith(NoOpSagaRequest.SAGA_START_REQUEST, SagaStartedEvent.class),
         eventWith(request1, TransactionStartedEvent.class),
         eventWith(request1, TransactionEndedEvent.class),
-        eventWith(SAGA_END_REQUEST, SagaEndedEvent.class),
-        eventWith(SAGA_START_REQUEST, SagaStartedEvent.class),
+        eventWith(NoOpSagaRequest.SAGA_END_REQUEST, SagaEndedEvent.class),
+        eventWith(NoOpSagaRequest.SAGA_START_REQUEST, SagaStartedEvent.class),
         eventWith(request2, TransactionStartedEvent.class),
         eventWith(request2, TransactionEndedEvent.class),
-        eventWith(SAGA_END_REQUEST, SagaEndedEvent.class)
+        eventWith(NoOpSagaRequest.SAGA_END_REQUEST, SagaEndedEvent.class)
     ));
   }
 
   @Test
   public void runSagaAfterRecovery() throws IOException {
-    eventStore.offer(new SagaStartedEvent(sagaId, sagaJson, SAGA_START_REQUEST));
+    eventStore.offer(new SagaStartedEvent(sagaId, sagaJson, NoOpSagaRequest.SAGA_START_REQUEST));
     coordinator.reanimate();
 
     coordinator.run(anotherSagaJson);
 
     assertThat(eventStore, contains(
-        eventWith(SAGA_START_REQUEST, SagaStartedEvent.class),
+        eventWith(NoOpSagaRequest.SAGA_START_REQUEST, SagaStartedEvent.class),
         eventWith(request1, TransactionStartedEvent.class),
         eventWith(request1, TransactionEndedEvent.class),
-        eventWith(SAGA_END_REQUEST, SagaEndedEvent.class),
-        eventWith(SAGA_START_REQUEST, SagaStartedEvent.class),
+        eventWith(NoOpSagaRequest.SAGA_END_REQUEST, SagaEndedEvent.class),
+        eventWith(NoOpSagaRequest.SAGA_START_REQUEST, SagaStartedEvent.class),
         eventWith(request2, TransactionStartedEvent.class),
         eventWith(request2, TransactionEndedEvent.class),
-        eventWith(SAGA_END_REQUEST, SagaEndedEvent.class)
+        eventWith(NoOpSagaRequest.SAGA_END_REQUEST, SagaEndedEvent.class)
     ));
   }
 
@@ -244,7 +242,7 @@ public abstract class SagaExecutionComponentTestBase {
     @Override
     public Map<String, List<EventEnvelope>> findPendingSagaEvents() {
       return singletonMap(sagaId, singletonList(
-          new EventEnvelope(1L, new SagaStartedEvent(sagaId, sagaJson, SAGA_START_REQUEST))));
+          new EventEnvelope(1L, new SagaStartedEvent(sagaId, sagaJson, NoOpSagaRequest.SAGA_START_REQUEST))));
     }
   }
 
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/SagaIntegrationTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaIntegrationTest.java
similarity index 93%
rename from saga-core/src/test/java/io/servicecomb/saga/core/SagaIntegrationTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaIntegrationTest.java
index 6b4af57..d005ee7 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/SagaIntegrationTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaIntegrationTest.java
@@ -15,21 +15,19 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
-import static io.servicecomb.saga.core.Compensation.SAGA_START_COMPENSATION;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_END_REQUEST;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
-import static io.servicecomb.saga.core.Operation.TYPE_REST;
-import static io.servicecomb.saga.core.SagaEventMatcher.eventWith;
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
-import static io.servicecomb.saga.core.SagaResponse.NONE_RESPONSE;
-import static io.servicecomb.saga.core.SagaTask.SAGA_END_TASK;
-import static io.servicecomb.saga.core.SagaTask.SAGA_REQUEST_TASK;
-import static io.servicecomb.saga.core.SagaTask.SAGA_START_TASK;
-import static io.servicecomb.saga.core.Transaction.SAGA_END_TRANSACTION;
-import static io.servicecomb.saga.core.Transaction.SAGA_START_TRANSACTION;
+import static org.apache.servicecomb.saga.core.Compensation.SAGA_START_COMPENSATION;
+import static org.apache.servicecomb.saga.core.Operation.TYPE_REST;
+import static org.apache.servicecomb.saga.core.SagaEventMatcher.eventWith;
+import static org.apache.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
+import static org.apache.servicecomb.saga.core.SagaResponse.NONE_RESPONSE;
+import static org.apache.servicecomb.saga.core.SagaTask.SAGA_END_TASK;
+import static org.apache.servicecomb.saga.core.SagaTask.SAGA_REQUEST_TASK;
+import static org.apache.servicecomb.saga.core.SagaTask.SAGA_START_TASK;
+import static org.apache.servicecomb.saga.core.Transaction.SAGA_END_TRANSACTION;
+import static org.apache.servicecomb.saga.core.Transaction.SAGA_START_TRANSACTION;
 import static java.util.Arrays.asList;
 import static java.util.Collections.emptySet;
 import static java.util.Collections.singletonList;
@@ -60,11 +58,11 @@ import org.mockito.stubbing.Answer;
 
 import com.seanyinx.github.unit.scaffolding.Randomness;
 
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
-import io.servicecomb.saga.core.dag.Node;
-import io.servicecomb.saga.core.dag.SingleLeafDirectedAcyclicGraph;
-import io.servicecomb.saga.infrastructure.ContextAwareEventStore;
-import io.servicecomb.saga.infrastructure.EmbeddedEventStore;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.core.dag.Node;
+import org.apache.servicecomb.saga.core.dag.SingleLeafDirectedAcyclicGraph;
+import org.apache.servicecomb.saga.infrastructure.ContextAwareEventStore;
+import org.apache.servicecomb.saga.infrastructure.EmbeddedEventStore;
 
 @SuppressWarnings("unchecked")
 public class SagaIntegrationTest {
@@ -108,8 +106,8 @@ public class SagaIntegrationTest {
   private final Node<SagaRequest> node2 = new Node<>(2, request2);
   private final Node<SagaRequest> node3 = new Node<>(3, request3);
   private final Node<SagaRequest> node4 = new Node<>(4, request4);
-  private final Node<SagaRequest> root = new Node<>(0, SAGA_START_REQUEST);
-  private final Node<SagaRequest> leaf = new Node<>(5, SAGA_END_REQUEST);
+  private final Node<SagaRequest> root = new Node<>(0, NoOpSagaRequest.SAGA_START_REQUEST);
+  private final Node<SagaRequest> leaf = new Node<>(5, NoOpSagaRequest.SAGA_END_REQUEST);
   private final SingleLeafDirectedAcyclicGraph<SagaRequest> sagaTaskGraph = new SingleLeafDirectedAcyclicGraph<>(root, leaf);
 
   private Saga saga;
@@ -404,7 +402,7 @@ public class SagaIntegrationTest {
     addExtraChildToNode1();
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1, transactionResponse1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -440,7 +438,7 @@ public class SagaIntegrationTest {
     addExtraChildToNode1();
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1, transactionResponse1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -478,7 +476,7 @@ public class SagaIntegrationTest {
     addExtraChildToNode1();
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -518,7 +516,7 @@ public class SagaIntegrationTest {
     addExtraChildToNode1();
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -560,7 +558,7 @@ public class SagaIntegrationTest {
     addExtraChildToNode1();
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -599,7 +597,7 @@ public class SagaIntegrationTest {
   @Test
   public void restoresSagaToEndStateByPlayingAllEvents() {
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/SagaStartTaskTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaStartTaskTest.java
similarity index 98%
rename from saga-core/src/test/java/io/servicecomb/saga/core/SagaStartTaskTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaStartTaskTest.java
index 8eafc01..b1d0c4e 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/SagaStartTaskTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/SagaStartTaskTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
 import static org.hamcrest.CoreMatchers.is;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/TransactionImpl.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/TransactionImpl.java
similarity index 96%
rename from saga-core/src/test/java/io/servicecomb/saga/core/TransactionImpl.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/TransactionImpl.java
index 9c301ad..a59b142 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/TransactionImpl.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/TransactionImpl.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import java.util.Map;
 
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/actors/ActorBasedSagaExecutionComponentTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaExecutionComponentTest.java
similarity index 81%
rename from saga-core/src/test/java/io/servicecomb/saga/core/actors/ActorBasedSagaExecutionComponentTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaExecutionComponentTest.java
index 70dcc88..01f8adb 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/actors/ActorBasedSagaExecutionComponentTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaExecutionComponentTest.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
+package org.apache.servicecomb.saga.core.actors;
 
-import io.servicecomb.saga.core.PersistentStore;
-import io.servicecomb.saga.core.SagaExecutionComponentTestBase;
-import io.servicecomb.saga.core.application.SagaFactory;
+import org.apache.servicecomb.saga.core.application.SagaFactory;
+import org.apache.servicecomb.saga.core.PersistentStore;
+import org.apache.servicecomb.saga.core.SagaExecutionComponentTestBase;
 
 
 public class ActorBasedSagaExecutionComponentTest extends SagaExecutionComponentTestBase {
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/actors/ActorBasedSagaIntegrationTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaIntegrationTest.java
similarity index 58%
rename from saga-core/src/test/java/io/servicecomb/saga/core/actors/ActorBasedSagaIntegrationTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaIntegrationTest.java
index 774abd8..ac649f0 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/actors/ActorBasedSagaIntegrationTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaIntegrationTest.java
@@ -15,16 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
-
-import static io.servicecomb.saga.core.Compensation.SAGA_START_COMPENSATION;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
-import static io.servicecomb.saga.core.Operation.TYPE_REST;
-import static io.servicecomb.saga.core.SagaEventMatcher.eventWith;
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
-import static io.servicecomb.saga.core.SagaResponse.NONE_RESPONSE;
-import static io.servicecomb.saga.core.Transaction.SAGA_END_TRANSACTION;
-import static io.servicecomb.saga.core.Transaction.SAGA_START_TRANSACTION;
+package org.apache.servicecomb.saga.core.actors;
+
+import static org.apache.servicecomb.saga.core.Transaction.SAGA_END_TRANSACTION;
+import static org.apache.servicecomb.saga.core.Transaction.SAGA_START_TRANSACTION;
 import static java.util.Arrays.asList;
 import static java.util.Collections.emptySet;
 import static java.util.Collections.singletonList;
@@ -48,6 +42,27 @@ import java.util.concurrent.Callable;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.CyclicBarrier;
 
+import org.apache.servicecomb.saga.core.Compensation;
+import org.apache.servicecomb.saga.core.EventEnvelope;
+import org.apache.servicecomb.saga.core.EventStore;
+import org.apache.servicecomb.saga.core.Fallback;
+import org.apache.servicecomb.saga.core.ForwardRecovery;
+import org.apache.servicecomb.saga.core.IdGenerator;
+import org.apache.servicecomb.saga.core.LongIdGenerator;
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.Operation;
+import org.apache.servicecomb.saga.core.Saga;
+import org.apache.servicecomb.saga.core.SagaEventMatcher;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaRequestImpl;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SagaStartedEvent;
+import org.apache.servicecomb.saga.core.SuccessfulSagaResponse;
+import org.apache.servicecomb.saga.core.TransactionCompensatedEvent;
+import org.apache.servicecomb.saga.core.TransactionStartedEvent;
+import org.apache.servicecomb.saga.core.application.SagaFactory;
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.collection.IsIterableContainingInOrder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -56,32 +71,16 @@ import org.mockito.stubbing.Answer;
 
 import com.seanyinx.github.unit.scaffolding.Randomness;
 
-import io.servicecomb.saga.core.BackwardRecovery;
-import io.servicecomb.saga.core.Compensation;
-import io.servicecomb.saga.core.EventEnvelope;
-import io.servicecomb.saga.core.EventStore;
-import io.servicecomb.saga.core.Fallback;
-import io.servicecomb.saga.core.ForwardRecovery;
-import io.servicecomb.saga.core.IdGenerator;
-import io.servicecomb.saga.core.LongIdGenerator;
-import io.servicecomb.saga.core.PersistentStore;
-import io.servicecomb.saga.core.Saga;
-import io.servicecomb.saga.core.SagaDefinition;
-import io.servicecomb.saga.core.SagaEndedEvent;
-import io.servicecomb.saga.core.SagaEvent;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaRequestImpl;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SagaStartedEvent;
-import io.servicecomb.saga.core.SuccessfulSagaResponse;
-import io.servicecomb.saga.core.Transaction;
-import io.servicecomb.saga.core.TransactionAbortedEvent;
-import io.servicecomb.saga.core.TransactionCompensatedEvent;
-import io.servicecomb.saga.core.TransactionEndedEvent;
-import io.servicecomb.saga.core.TransactionStartedEvent;
-import io.servicecomb.saga.core.application.SagaFactory;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
-import io.servicecomb.saga.infrastructure.EmbeddedEventStore;
+import org.apache.servicecomb.saga.core.BackwardRecovery;
+import org.apache.servicecomb.saga.core.PersistentStore;
+import org.apache.servicecomb.saga.core.SagaDefinition;
+import org.apache.servicecomb.saga.core.SagaEndedEvent;
+import org.apache.servicecomb.saga.core.SagaEvent;
+import org.apache.servicecomb.saga.core.Transaction;
+import org.apache.servicecomb.saga.core.TransactionAbortedEvent;
+import org.apache.servicecomb.saga.core.TransactionEndedEvent;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.infrastructure.EmbeddedEventStore;
 
 @SuppressWarnings("unchecked")
 public class ActorBasedSagaIntegrationTest {
@@ -132,15 +131,15 @@ public class ActorBasedSagaIntegrationTest {
     when(sagaDefinition.requests()).thenReturn(new SagaRequest[]{request1, request2});
 
     when(childrenExtractor.fromJson(anyString())).thenReturn(emptySet());
-    when(childrenExtractor.fromJson(NONE_RESPONSE.body())).thenReturn(setOf("none"));
+    when(childrenExtractor.fromJson(SagaResponse.NONE_RESPONSE.body())).thenReturn(setOf("none"));
 
-    when(transaction1.send(request1.serviceName(), EMPTY_RESPONSE)).thenReturn(transactionResponse1);
+    when(transaction1.send(request1.serviceName(), SagaResponse.EMPTY_RESPONSE)).thenReturn(transactionResponse1);
     when(transaction2.send(request2.serviceName(), transactionResponse1)).thenReturn(transactionResponse2);
     when(transaction3.send(request3.serviceName(), transactionResponse1)).thenReturn(transactionResponse3);
 
     when(compensation1.send(request1.serviceName(), compensationResponse2)).thenReturn(compensationResponse1);
     when(compensation2.send(request2.serviceName(), compensationResponse3)).thenReturn(compensationResponse2);
-    when(compensation3.send(request3.serviceName(), EMPTY_RESPONSE)).thenReturn(compensationResponse3);
+    when(compensation3.send(request3.serviceName(), SagaResponse.EMPTY_RESPONSE)).thenReturn(compensationResponse3);
   }
 
   @After
@@ -154,16 +153,16 @@ public class ActorBasedSagaIntegrationTest {
     saga = sagaFactory.createSaga(requestJson, sagaId, eventStore, sagaDefinition);
     saga.run();
 
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction2, TransactionEndedEvent.class),
-        eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
     ));
 
-    verify(transaction1).send(request1.serviceName(), EMPTY_RESPONSE);
+    verify(transaction1).send(request1.serviceName(), SagaResponse.EMPTY_RESPONSE);
     verify(transaction2).send(request2.serviceName(), transactionResponse1);
 
     verify(compensation1, never()).send(request1.serviceName());
@@ -196,19 +195,21 @@ public class ActorBasedSagaIntegrationTest {
 
     saga.run();
 
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        anyOf(eventWith(sagaId, transaction2, TransactionStartedEvent.class), eventWith(sagaId, transaction3, TransactionStartedEvent.class)),
-        anyOf(eventWith(sagaId, transaction2, TransactionStartedEvent.class), eventWith(sagaId, transaction3, TransactionStartedEvent.class)),
-        eventWith(sagaId, transaction3, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction2, TransactionAbortedEvent.class),
-        eventWith(sagaId, compensation3, TransactionCompensatedEvent.class),
-        eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
-        eventWith(sagaId, SAGA_START_COMPENSATION, SagaEndedEvent.class)));
-
-    verify(transaction1).send(request1.serviceName(), EMPTY_RESPONSE);
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        CoreMatchers.anyOf(SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class), SagaEventMatcher
+            .eventWith(sagaId, transaction3, TransactionStartedEvent.class)),
+        CoreMatchers.anyOf(SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class), SagaEventMatcher
+            .eventWith(sagaId, transaction3, TransactionStartedEvent.class)),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionAbortedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation3, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, Compensation.SAGA_START_COMPENSATION, SagaEndedEvent.class)));
+
+    verify(transaction1).send(request1.serviceName(), SagaResponse.EMPTY_RESPONSE);
     verify(transaction2).send(request2.serviceName(), transactionResponse1);
     verify(transaction3).send(request3.serviceName(), transactionResponse1);
 
@@ -226,16 +227,16 @@ public class ActorBasedSagaIntegrationTest {
 
     saga.run();
 
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction3, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction3, TransactionEndedEvent.class),
-        eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
     ));
 
-    verify(transaction1).send(request1.serviceName(), EMPTY_RESPONSE);
+    verify(transaction1).send(request1.serviceName(), SagaResponse.EMPTY_RESPONSE);
     verify(transaction3).send(request3.serviceName(), transactionResponse1);
     verify(transaction2, never()).send(anyString(), any(SagaResponse.class));
 
@@ -253,14 +254,14 @@ public class ActorBasedSagaIntegrationTest {
 
     saga.run();
 
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
     ));
 
-    verify(transaction1).send(request1.serviceName(), EMPTY_RESPONSE);
+    verify(transaction1).send(request1.serviceName(), SagaResponse.EMPTY_RESPONSE);
     verify(transaction2, never()).send(anyString(), any(SagaResponse.class));
     verify(transaction3, never()).send(anyString(), any(SagaResponse.class));
     verify(transaction4, never()).send(anyString(), any(SagaResponse.class));
@@ -282,20 +283,20 @@ public class ActorBasedSagaIntegrationTest {
 
     saga.run();
 
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction3, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction3, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction4, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction4, TransactionAbortedEvent.class),
-        eventWith(sagaId, transaction3, TransactionCompensatedEvent.class),
-        eventWith(sagaId, transaction1, TransactionCompensatedEvent.class),
-        eventWith(sagaId, SAGA_START_COMPENSATION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction4, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction4, TransactionAbortedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, Compensation.SAGA_START_COMPENSATION, SagaEndedEvent.class)
     ));
 
-    verify(transaction1).send(request1.serviceName(), EMPTY_RESPONSE);
+    verify(transaction1).send(request1.serviceName(), SagaResponse.EMPTY_RESPONSE);
     verify(transaction3).send(request3.serviceName(), transactionResponse1);
     verify(transaction4).send(request4.serviceName(), transactionResponse3);
     verify(transaction2, never()).send(anyString(), any(SagaResponse.class));
@@ -335,24 +336,24 @@ public class ActorBasedSagaIntegrationTest {
     saga.run();
 
     // the ordering of events may not be consistence due to concurrent processing of requests
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        anyOf(
-            eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-            eventWith(sagaId, transaction3, TransactionStartedEvent.class)),
-        anyOf(
-            eventWith(sagaId, transaction3, TransactionStartedEvent.class),
-            eventWith(sagaId, transaction2, TransactionStartedEvent.class)),
-        eventWith(sagaId, transaction3, TransactionAbortedEvent.class),
-        eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction2, TransactionEndedEvent.class),
-        eventWith(sagaId, compensation2, TransactionCompensatedEvent.class),
-        eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
-        eventWith(sagaId, SAGA_START_COMPENSATION, SagaEndedEvent.class)));
-
-    verify(transaction1).send(request1.serviceName(), EMPTY_RESPONSE);
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        CoreMatchers.anyOf(
+            SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+            SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class)),
+        CoreMatchers.anyOf(
+            SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class),
+            SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class)),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionAbortedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation2, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, Compensation.SAGA_START_COMPENSATION, SagaEndedEvent.class)));
+
+    verify(transaction1).send(request1.serviceName(), SagaResponse.EMPTY_RESPONSE);
     verify(transaction2, times(2)).send(request2.serviceName(), transactionResponse1);
     verify(transaction3).send(request3.serviceName(), transactionResponse1);
 
@@ -373,16 +374,16 @@ public class ActorBasedSagaIntegrationTest {
 
     saga.run();
 
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction2, TransactionEndedEvent.class),
-        eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
     ));
 
-    verify(transaction1).send(request1.serviceName(), EMPTY_RESPONSE);
+    verify(transaction1).send(request1.serviceName(), SagaResponse.EMPTY_RESPONSE);
     verify(transaction2, times(3)).send(request2.serviceName(), transactionResponse1);
 
     verify(compensation1, never()).send(anyString(), any(SagaResponse.class));
@@ -400,7 +401,7 @@ public class ActorBasedSagaIntegrationTest {
 
     saga.run();
 
-    verify(transaction1).send(request1.serviceName(), EMPTY_RESPONSE);
+    verify(transaction1).send(request1.serviceName(), SagaResponse.EMPTY_RESPONSE);
     verify(transaction2).send(request2.serviceName(), transactionResponse1);
 
     verify(compensation1, times(retries + 1)).send(request1.serviceName());
@@ -415,7 +416,7 @@ public class ActorBasedSagaIntegrationTest {
     saga = sagaFactory.createSaga(requestJson, sagaId, eventStore, sagaDefinition);
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1, transactionResponse1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -426,15 +427,15 @@ public class ActorBasedSagaIntegrationTest {
     saga.play();
 
     saga.run();
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction2, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction3, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction3, TransactionEndedEvent.class),
-        eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
     ));
 
     verify(transaction1, never()).send(anyString(), any(SagaResponse.class));
@@ -452,7 +453,7 @@ public class ActorBasedSagaIntegrationTest {
     saga = sagaFactory.createSaga(requestJson, sagaId, eventStore, sagaDefinition);
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1, transactionResponse1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -464,16 +465,16 @@ public class ActorBasedSagaIntegrationTest {
     saga.play();
 
     saga.run();
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction2, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction3, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction3, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction3, TransactionEndedEvent.class),
-        eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
     ));
 
     verify(transaction1, never()).send(anyString(), any(SagaResponse.class));
@@ -491,7 +492,7 @@ public class ActorBasedSagaIntegrationTest {
     saga = sagaFactory.createSaga(requestJson, sagaId, eventStore, sagaDefinition);
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -504,17 +505,17 @@ public class ActorBasedSagaIntegrationTest {
     saga.play();
 
     saga.run();
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction2, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction3, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction3, TransactionAbortedEvent.class),
-        eventWith(sagaId, compensation2, TransactionCompensatedEvent.class),
-        eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
-        eventWith(sagaId, SAGA_START_COMPENSATION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionAbortedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation2, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, Compensation.SAGA_START_COMPENSATION, SagaEndedEvent.class)
     ));
 
     verify(transaction1, never()).send(anyString(), any(SagaResponse.class));
@@ -532,7 +533,7 @@ public class ActorBasedSagaIntegrationTest {
     saga = sagaFactory.createSaga(requestJson, sagaId, eventStore, sagaDefinition);
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -546,17 +547,17 @@ public class ActorBasedSagaIntegrationTest {
     saga.play();
 
     saga.run();
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction2, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction3, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction3, TransactionAbortedEvent.class),
-        eventWith(sagaId, compensation2, TransactionCompensatedEvent.class),
-        eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
-        eventWith(sagaId, SAGA_START_COMPENSATION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionAbortedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation2, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, Compensation.SAGA_START_COMPENSATION, SagaEndedEvent.class)
     ));
 
     verify(transaction1, never()).send(anyString(), any(SagaResponse.class));
@@ -574,7 +575,7 @@ public class ActorBasedSagaIntegrationTest {
     saga = sagaFactory.createSaga(requestJson, sagaId, eventStore, sagaDefinition);
 
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -588,17 +589,17 @@ public class ActorBasedSagaIntegrationTest {
     saga.play();
 
     saga.run();
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction2, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction3, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction3, TransactionAbortedEvent.class),
-        eventWith(sagaId, compensation2, TransactionCompensatedEvent.class),
-        eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
-        eventWith(sagaId, SAGA_START_COMPENSATION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction3, TransactionAbortedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation2, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, compensation1, TransactionCompensatedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, Compensation.SAGA_START_COMPENSATION, SagaEndedEvent.class)
     ));
 
     verify(transaction1, never()).send(anyString(), any(SagaResponse.class));
@@ -614,7 +615,7 @@ public class ActorBasedSagaIntegrationTest {
   public void restoresSagaToEndStateByPlayingAllEvents() {
     saga = sagaFactory.createSaga(requestJson, sagaId, eventStore, sagaDefinition);
     Iterable<EventEnvelope> events = asList(
-        envelope(new SagaStartedEvent(sagaId, requestJson, SAGA_START_REQUEST)),
+        envelope(new SagaStartedEvent(sagaId, requestJson, NoOpSagaRequest.SAGA_START_REQUEST)),
         envelope(new TransactionStartedEvent(sagaId, request1)),
         envelope(new TransactionEndedEvent(sagaId, request1)),
         envelope(new TransactionStartedEvent(sagaId, request2)),
@@ -625,13 +626,13 @@ public class ActorBasedSagaIntegrationTest {
     saga.play();
 
     saga.run();
-    assertThat(eventStore, contains(
-        eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction1, TransactionEndedEvent.class),
-        eventWith(sagaId, transaction2, TransactionStartedEvent.class),
-        eventWith(sagaId, transaction2, TransactionEndedEvent.class),
-        eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
+    assertThat(eventStore, IsIterableContainingInOrder.contains(
+        SagaEventMatcher.eventWith(sagaId, SAGA_START_TRANSACTION, SagaStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction1, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionStartedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, transaction2, TransactionEndedEvent.class),
+        SagaEventMatcher.eventWith(sagaId, SAGA_END_TRANSACTION, SagaEndedEvent.class)
     ));
 
     verify(transaction1, never()).send(anyString(), any(SagaResponse.class));
@@ -672,7 +673,7 @@ public class ActorBasedSagaIntegrationTest {
       Compensation compensation,
       String... parentIds) {
 
-    return new SagaRequestImpl(requestId, serviceName, TYPE_REST, transaction, compensation, parentIds);
+    return new SagaRequestImpl(requestId, serviceName, Operation.TYPE_REST, transaction, compensation, parentIds);
   }
 
   private SagaRequest request(String requestId,
@@ -681,7 +682,7 @@ public class ActorBasedSagaIntegrationTest {
       Compensation compensation,
       Fallback fallback) {
 
-    return new SagaRequestImpl(requestId, serviceName, TYPE_REST, transaction, compensation, fallback);
+    return new SagaRequestImpl(requestId, serviceName, Operation.TYPE_REST, transaction, compensation, fallback);
   }
 
   private HashSet<String> setOf(String requestId) {
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/actors/CompletionCallbackActorTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/CompletionCallbackActorTest.java
similarity index 88%
rename from saga-core/src/test/java/io/servicecomb/saga/core/actors/CompletionCallbackActorTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/CompletionCallbackActorTest.java
index bb43d6e..5823a06 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/actors/CompletionCallbackActorTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/CompletionCallbackActorTest.java
@@ -15,12 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
+package org.apache.servicecomb.saga.core.actors;
 
 import static akka.actor.ActorRef.noSender;
 import static akka.actor.Props.empty;
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_END_REQUEST;
 import static org.awaitility.Awaitility.await;
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsInstanceOf.instanceOf;
@@ -29,17 +28,18 @@ import static org.junit.Assert.assertThat;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.actors.messages.AbortMessage;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import io.servicecomb.saga.core.FailedSagaResponse;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.actors.messages.AbortMessage;
-import io.servicecomb.saga.core.actors.messages.CompensateMessage;
-import io.servicecomb.saga.core.actors.messages.FailMessage;
-import io.servicecomb.saga.core.actors.messages.TransactMessage;
+import org.apache.servicecomb.saga.core.FailedSagaResponse;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.actors.messages.CompensateMessage;
+import org.apache.servicecomb.saga.core.actors.messages.FailMessage;
+import org.apache.servicecomb.saga.core.actors.messages.TransactMessage;
 import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
 import akka.testkit.javadsl.TestKit;
@@ -118,7 +118,7 @@ public class CompletionCallbackActorTest {
   @Test
   public void tellLeafToCompensateOnAbort() throws Exception {
     new TestKit(actorSystem) {{
-      context.addActor(SAGA_END_REQUEST.id(), getRef());
+      context.addActor(NoOpSagaRequest.SAGA_END_REQUEST.id(), getRef());
       CompletableFuture<SagaResponse> future = new CompletableFuture<>();
 
       ActorRef actor = actorSystem.actorOf(CompletionCallbackActor.props(future));
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/actors/EventContextImplTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/EventContextImplTest.java
similarity index 88%
rename from saga-core/src/test/java/io/servicecomb/saga/core/actors/EventContextImplTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/EventContextImplTest.java
index b881774..cfd3788 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/actors/EventContextImplTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/EventContextImplTest.java
@@ -15,24 +15,24 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
+package org.apache.servicecomb.saga.core.actors;
 
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.when;
 
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.actors.messages.AbortRecoveryMessage;
+import org.apache.servicecomb.saga.core.actors.messages.CompensationRecoveryMessage;
+import org.apache.servicecomb.saga.core.actors.messages.TransactionRecoveryMessage;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.scalatest.junit.JUnitSuite;
 
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.actors.messages.AbortRecoveryMessage;
-import io.servicecomb.saga.core.actors.messages.CompensationRecoveryMessage;
-import io.servicecomb.saga.core.actors.messages.TransactionRecoveryMessage;
 import akka.actor.ActorSystem;
 import akka.testkit.javadsl.TestKit;
 
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/actors/RequestActorBuilderTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/RequestActorBuilderTest.java
similarity index 72%
rename from saga-core/src/test/java/io/servicecomb/saga/core/actors/RequestActorBuilderTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/RequestActorBuilderTest.java
index 0bcfce0..b3a2c14 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/actors/RequestActorBuilderTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/RequestActorBuilderTest.java
@@ -15,13 +15,8 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
+package org.apache.servicecomb.saga.core.actors;
 
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_END_REQUEST;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
-import static io.servicecomb.saga.core.SagaTask.SAGA_END_TASK;
-import static io.servicecomb.saga.core.SagaTask.SAGA_START_TASK;
 import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.hamcrest.core.IsInstanceOf.instanceOf;
 import static org.junit.Assert.assertThat;
@@ -38,6 +33,11 @@ import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SagaTask;
+import org.hamcrest.Matchers;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.Test;
@@ -47,13 +47,10 @@ import org.scalatest.junit.JUnitSuite;
 
 import com.seanyinx.github.unit.scaffolding.Randomness;
 
-import io.servicecomb.saga.core.CompositeSagaResponse;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SagaTask;
-import io.servicecomb.saga.core.actors.messages.CompensateMessage;
-import io.servicecomb.saga.core.actors.messages.TransactMessage;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.core.CompositeSagaResponse;
+import org.apache.servicecomb.saga.core.actors.messages.CompensateMessage;
+import org.apache.servicecomb.saga.core.actors.messages.TransactMessage;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
 import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
 import akka.testkit.javadsl.TestKit;
@@ -85,8 +82,8 @@ public class RequestActorBuilderTest extends JUnitSuite {
 
   @Before
   public void setUp() throws Exception {
-    tasks.put(SAGA_START_TASK, task);
-    tasks.put(SAGA_END_TASK, task);
+    tasks.put(SagaTask.SAGA_START_TASK, task);
+    tasks.put(SagaTask.SAGA_END_TASK, task);
     tasks.put(taskId, task);
 
     when(request1.id()).thenReturn(requestId1);
@@ -101,8 +98,9 @@ public class RequestActorBuilderTest extends JUnitSuite {
     when(request2.parents()).thenReturn(new String[] {requestId1});
     when(request3.parents()).thenReturn(new String[] {requestId1});
 
-    when(task.commit(SAGA_START_REQUEST, EMPTY_RESPONSE)).thenReturn(EMPTY_RESPONSE);
-    when(task.commit(request1, EMPTY_RESPONSE)).thenReturn(response1);
+    when(task.commit(NoOpSagaRequest.SAGA_START_REQUEST, SagaResponse.EMPTY_RESPONSE)).thenReturn(
+        SagaResponse.EMPTY_RESPONSE);
+    when(task.commit(request1, SagaResponse.EMPTY_RESPONSE)).thenReturn(response1);
     when(task.commit(request2, response1)).thenReturn(response2);
     when(task.commit(request3, response1)).thenReturn(response3);
 
@@ -118,23 +116,24 @@ public class RequestActorBuilderTest extends JUnitSuite {
   public void createOneActorPerRequest() throws Exception {
     new TestKit(actorSystem) {{
       ArgumentCaptor<SagaResponse> argumentCaptor = ArgumentCaptor.forClass(SagaResponse.class);
-      when(task.commit(eq(SAGA_END_REQUEST), argumentCaptor.capture())).thenReturn(EMPTY_RESPONSE);
+      when(task.commit(eq(NoOpSagaRequest.SAGA_END_REQUEST), argumentCaptor.capture())).thenReturn(
+          SagaResponse.EMPTY_RESPONSE);
 
-      ActorRef root = actorBuilder.build(requests, tasks, getRef()).actorOf(SAGA_START_REQUEST.id());
+      ActorRef root = actorBuilder.build(requests, tasks, getRef()).actorOf(NoOpSagaRequest.SAGA_START_REQUEST.id());
 
-      root.tell(new TransactMessage(SAGA_START_REQUEST, EMPTY_RESPONSE), getRef());
+      root.tell(new TransactMessage(NoOpSagaRequest.SAGA_START_REQUEST, SagaResponse.EMPTY_RESPONSE), getRef());
 
       List<SagaResponse> responses = receiveN(1, duration("2 seconds")).stream()
           .map(o -> ((TransactMessage) o).response())
           .collect(Collectors.toList());
 
-      assertThat(responses, containsInAnyOrder(EMPTY_RESPONSE));
+      assertThat(responses, Matchers.containsInAnyOrder(SagaResponse.EMPTY_RESPONSE));
 
-      verify(task).commit(SAGA_START_REQUEST, EMPTY_RESPONSE);
-      verify(task).commit(request1, EMPTY_RESPONSE);
+      verify(task).commit(NoOpSagaRequest.SAGA_START_REQUEST, SagaResponse.EMPTY_RESPONSE);
+      verify(task).commit(request1, SagaResponse.EMPTY_RESPONSE);
       verify(task).commit(request2, response1);
       verify(task).commit(request3, response1);
-      verify(task).commit(eq(SAGA_END_REQUEST), any(SagaResponse.class));
+      verify(task).commit(eq(NoOpSagaRequest.SAGA_END_REQUEST), any(SagaResponse.class));
 
       SagaResponse response = argumentCaptor.getValue();
       assertThat(response, instanceOf(CompositeSagaResponse.class));
@@ -147,27 +146,28 @@ public class RequestActorBuilderTest extends JUnitSuite {
   public void compensateAllCompletedTransactions() throws Exception {
     new TestKit(actorSystem) {{
       ArgumentCaptor<SagaResponse> argumentCaptor = ArgumentCaptor.forClass(SagaResponse.class);
-      when(task.commit(eq(SAGA_END_REQUEST), argumentCaptor.capture())).thenReturn(EMPTY_RESPONSE);
+      when(task.commit(eq(NoOpSagaRequest.SAGA_END_REQUEST), argumentCaptor.capture())).thenReturn(
+          SagaResponse.EMPTY_RESPONSE);
 
-      ActorRef root = actorBuilder.build(requests, tasks, getRef()).actorOf(SAGA_START_REQUEST.id());
+      ActorRef root = actorBuilder.build(requests, tasks, getRef()).actorOf(NoOpSagaRequest.SAGA_START_REQUEST.id());
 
-      root.tell(new TransactMessage(SAGA_START_REQUEST, EMPTY_RESPONSE), getRef());
+      root.tell(new TransactMessage(NoOpSagaRequest.SAGA_START_REQUEST, SagaResponse.EMPTY_RESPONSE), getRef());
 
       List<SagaResponse> responses = receiveN(1, duration("2 seconds")).stream()
           .map(o -> ((TransactMessage) o).response())
           .collect(Collectors.toList());
 
-      assertThat(responses, containsInAnyOrder(EMPTY_RESPONSE));
+      assertThat(responses, Matchers.containsInAnyOrder(SagaResponse.EMPTY_RESPONSE));
 
       CompensateMessage message = new CompensateMessage(response1);
       getLastSender().tell(message, getRef());
       expectMsg(message);
 
-      verify(task).compensate(SAGA_START_REQUEST);
+      verify(task).compensate(NoOpSagaRequest.SAGA_START_REQUEST);
       verify(task).compensate(request1);
       verify(task).compensate(request2);
       verify(task).compensate(request3);
-      verify(task).compensate(SAGA_END_REQUEST);
+      verify(task).compensate(NoOpSagaRequest.SAGA_END_REQUEST);
     }};
   }
 }
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/actors/RequestActorTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/RequestActorTest.java
similarity index 80%
rename from saga-core/src/test/java/io/servicecomb/saga/core/actors/RequestActorTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/RequestActorTest.java
index 2990385..776b5aa 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/actors/RequestActorTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/actors/RequestActorTest.java
@@ -15,14 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.actors;
+package org.apache.servicecomb.saga.core.actors;
 
 import static akka.actor.ActorRef.noSender;
 import static akka.actor.Props.empty;
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.core.Operation.SUCCESSFUL_SAGA_RESPONSE;
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
-import static io.servicecomb.saga.core.SagaResponse.NONE_RESPONSE;
 import static java.util.Collections.emptySet;
 import static java.util.Collections.singleton;
 import static org.hamcrest.Matchers.contains;
@@ -42,6 +39,19 @@ import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import org.apache.servicecomb.saga.core.CompositeSagaResponse;
+import org.apache.servicecomb.saga.core.FailedSagaResponse;
+import org.apache.servicecomb.saga.core.Operation;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SagaStartFailedException;
+import org.apache.servicecomb.saga.core.SagaTask;
+import org.apache.servicecomb.saga.core.TransactionFailedException;
+import org.apache.servicecomb.saga.core.actors.messages.AbortMessage;
+import org.apache.servicecomb.saga.core.actors.messages.CompensationRecoveryMessage;
+import org.apache.servicecomb.saga.core.actors.messages.TransactMessage;
+import org.apache.servicecomb.saga.core.actors.messages.TransactionRecoveryMessage;
+import org.hamcrest.Matchers;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.Test;
@@ -49,20 +59,9 @@ import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 import org.scalatest.junit.JUnitSuite;
 
-import io.servicecomb.saga.core.CompositeSagaResponse;
-import io.servicecomb.saga.core.FailedSagaResponse;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SagaStartFailedException;
-import io.servicecomb.saga.core.SagaTask;
-import io.servicecomb.saga.core.TransactionFailedException;
-import io.servicecomb.saga.core.actors.messages.AbortMessage;
-import io.servicecomb.saga.core.actors.messages.CompensateMessage;
-import io.servicecomb.saga.core.actors.messages.CompensationRecoveryMessage;
-import io.servicecomb.saga.core.actors.messages.FailMessage;
-import io.servicecomb.saga.core.actors.messages.TransactMessage;
-import io.servicecomb.saga.core.actors.messages.TransactionRecoveryMessage;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.core.actors.messages.CompensateMessage;
+import org.apache.servicecomb.saga.core.actors.messages.FailMessage;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
 import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
 import akka.testkit.javadsl.TestKit;
@@ -109,11 +108,11 @@ public class RequestActorTest extends JUnitSuite {
       context.addParent(requestId, parent);
 
       when(request.parents()).thenReturn(new String[] {parentRequestId1});
-      when(task.commit(request, SUCCESSFUL_SAGA_RESPONSE)).thenReturn(response);
+      when(task.commit(request, Operation.SUCCESSFUL_SAGA_RESPONSE)).thenReturn(response);
 
       ActorRef actorRef = actorSystem.actorOf(RequestActor.props(context, task, request));
 
-      actorRef.tell(new TransactMessage(request1, SUCCESSFUL_SAGA_RESPONSE), parent);
+      actorRef.tell(new TransactMessage(request1, Operation.SUCCESSFUL_SAGA_RESPONSE), parent);
 
       List<SagaResponse> responses = receiveN(2, duration("2 seconds")).stream()
           .map(o -> ((TransactMessage) o).response())
@@ -121,7 +120,7 @@ public class RequestActorTest extends JUnitSuite {
 
       assertThat(responses, containsInAnyOrder(response, response));
 
-      verify(task).commit(request, SUCCESSFUL_SAGA_RESPONSE);
+      verify(task).commit(request, Operation.SUCCESSFUL_SAGA_RESPONSE);
     }};
   }
 
@@ -143,10 +142,10 @@ public class RequestActorTest extends JUnitSuite {
 
       ActorRef actorRef = actorSystem.actorOf(RequestActor.props(context, task, request));
 
-      actorRef.tell(new TransactMessage(request1, SUCCESSFUL_SAGA_RESPONSE), parent1);
+      actorRef.tell(new TransactMessage(request1, Operation.SUCCESSFUL_SAGA_RESPONSE), parent1);
       expectNoMsg(duration("500 milliseconds"));
 
-      actorRef.tell(new TransactMessage(request2, EMPTY_RESPONSE), parent2);
+      actorRef.tell(new TransactMessage(request2, SagaResponse.EMPTY_RESPONSE), parent2);
 
       List<SagaResponse> responses = receiveN(2, duration("2 seconds")).stream()
           .map(o -> ((TransactMessage) o).response())
@@ -157,7 +156,7 @@ public class RequestActorTest extends JUnitSuite {
       SagaResponse response = argumentCaptor.getValue();
       assertThat(response, instanceOf(CompositeSagaResponse.class));
       assertThat(((CompositeSagaResponse) response).responses(),
-          containsInAnyOrder(EMPTY_RESPONSE, SUCCESSFUL_SAGA_RESPONSE));
+          Matchers.containsInAnyOrder(SagaResponse.EMPTY_RESPONSE, Operation.SUCCESSFUL_SAGA_RESPONSE));
     }};
   }
 
@@ -170,11 +169,11 @@ public class RequestActorTest extends JUnitSuite {
       context.addParent(requestId, getRef());
 
       when(request.parents()).thenReturn(new String[] {parentRequestId1});
-      when(task.commit(request, SUCCESSFUL_SAGA_RESPONSE)).thenThrow(exception);
+      when(task.commit(request, Operation.SUCCESSFUL_SAGA_RESPONSE)).thenThrow(exception);
 
       ActorRef actorRef = actorSystem.actorOf(RequestActor.props(context, task, request));
 
-      actorRef.tell(new TransactMessage(request1, SUCCESSFUL_SAGA_RESPONSE), getRef());
+      actorRef.tell(new TransactMessage(request1, Operation.SUCCESSFUL_SAGA_RESPONSE), getRef());
 
       List<SagaResponse> responses = receiveN(2, duration("2 seconds")).stream()
           .map(o -> ((AbortMessage) o).response())
@@ -216,11 +215,11 @@ public class RequestActorTest extends JUnitSuite {
       context.addParent(requestId, getRef());
 
       when(request.parents()).thenReturn(new String[] {parentRequestId1});
-      when(task.commit(request, SUCCESSFUL_SAGA_RESPONSE)).thenReturn(response);
+      when(task.commit(request, Operation.SUCCESSFUL_SAGA_RESPONSE)).thenReturn(response);
 
       ActorRef actorRef = actorSystem.actorOf(RequestActor.props(context, task, request));
 
-      actorRef.tell(new TransactMessage(request1, SUCCESSFUL_SAGA_RESPONSE), getRef());
+      actorRef.tell(new TransactMessage(request1, Operation.SUCCESSFUL_SAGA_RESPONSE), getRef());
       actorRef.tell(new AbortMessage(exception), noSender());
       actorRef.tell(compensateMessage, getRef());
       actorRef.tell(compensateMessage, getRef());
@@ -266,7 +265,7 @@ public class RequestActorTest extends JUnitSuite {
 
   @Test
   public void skipIfActorIsNotChosenByAnyParent() throws Exception {
-    when(childrenExtractor.fromJson(SUCCESSFUL_SAGA_RESPONSE.body())).thenReturn(singleton("none"));
+    when(childrenExtractor.fromJson(Operation.SUCCESSFUL_SAGA_RESPONSE.body())).thenReturn(singleton("none"));
 
     new TestKit(actorSystem) {{
       addChildren(getRef());
@@ -276,14 +275,14 @@ public class RequestActorTest extends JUnitSuite {
 
       ActorRef actorRef = actorSystem.actorOf(RequestActor.props(context, task, request));
 
-      actorRef.tell(new TransactMessage(request1, SUCCESSFUL_SAGA_RESPONSE), getRef());
+      actorRef.tell(new TransactMessage(request1, Operation.SUCCESSFUL_SAGA_RESPONSE), getRef());
 
       List<SagaResponse> responses = receiveN(2, duration("2 seconds")).stream()
           .map(o -> ((TransactMessage) o).response())
           .collect(Collectors.toList());
 
-      assertThat(responses, containsInAnyOrder(NONE_RESPONSE, NONE_RESPONSE));
-      verify(task, never()).commit(request, SUCCESSFUL_SAGA_RESPONSE);
+      assertThat(responses, Matchers.containsInAnyOrder(SagaResponse.NONE_RESPONSE, SagaResponse.NONE_RESPONSE));
+      verify(task, never()).commit(request, Operation.SUCCESSFUL_SAGA_RESPONSE);
 
       // skip compensation for ignored actor
       actorRef.tell(compensateMessage, getRef());
@@ -296,7 +295,7 @@ public class RequestActorTest extends JUnitSuite {
 
   @Test
   public void transactIfChosenByAnyParent() throws Exception {
-    when(childrenExtractor.fromJson(SUCCESSFUL_SAGA_RESPONSE.body())).thenReturn(singleton(requestId));
+    when(childrenExtractor.fromJson(Operation.SUCCESSFUL_SAGA_RESPONSE.body())).thenReturn(singleton(requestId));
 
     new TestKit(actorSystem) {{
       addChildren(getRef());
@@ -312,8 +311,8 @@ public class RequestActorTest extends JUnitSuite {
 
       ActorRef actorRef = actorSystem.actorOf(RequestActor.props(context, task, request));
 
-      actorRef.tell(new TransactMessage(request1, SUCCESSFUL_SAGA_RESPONSE), parent1);
-      actorRef.tell(new TransactMessage(request2, SUCCESSFUL_SAGA_RESPONSE), parent2);
+      actorRef.tell(new TransactMessage(request1, Operation.SUCCESSFUL_SAGA_RESPONSE), parent1);
+      actorRef.tell(new TransactMessage(request2, Operation.SUCCESSFUL_SAGA_RESPONSE), parent2);
 
       List<SagaResponse> responses = receiveN(2, duration("2 seconds")).stream()
           .map(o -> ((TransactMessage) o).response())
@@ -336,7 +335,7 @@ public class RequestActorTest extends JUnitSuite {
       ActorRef actorRef = actorSystem.actorOf(RequestActor.props(context, task, request));
 
       actorRef.tell(new TransactionRecoveryMessage(response), noSender());
-      actorRef.tell(new TransactMessage(request1, SUCCESSFUL_SAGA_RESPONSE), parent);
+      actorRef.tell(new TransactMessage(request1, Operation.SUCCESSFUL_SAGA_RESPONSE), parent);
 
       List<SagaResponse> responses = receiveN(1, duration("2 seconds")).stream()
           .map(o -> ((TransactMessage) o).response())
@@ -344,7 +343,7 @@ public class RequestActorTest extends JUnitSuite {
 
       assertThat(responses, containsInAnyOrder(response));
 
-      verify(task, never()).commit(request, SUCCESSFUL_SAGA_RESPONSE);
+      verify(task, never()).commit(request, Operation.SUCCESSFUL_SAGA_RESPONSE);
     }};
   }
 
@@ -378,11 +377,11 @@ public class RequestActorTest extends JUnitSuite {
       when(request.parents()).thenReturn(new String[] {parentRequestId1});
 
       SagaStartFailedException oops = new SagaStartFailedException("oops", exception);
-      when(task.commit(request, EMPTY_RESPONSE)).thenThrow(oops);
+      when(task.commit(request, SagaResponse.EMPTY_RESPONSE)).thenThrow(oops);
 
       ActorRef actorRef = actorSystem.actorOf(RequestActor.props(context, task, request));
 
-      actorRef.tell(new TransactMessage(request, EMPTY_RESPONSE), getRef());
+      actorRef.tell(new TransactMessage(request, SagaResponse.EMPTY_RESPONSE), getRef());
 
       expectMsgClass(FailMessage.class);
     }};
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/dag/DirectedAcyclicGraphTraversalTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/DirectedAcyclicGraphTraversalTest.java
similarity index 98%
rename from saga-core/src/test/java/io/servicecomb/saga/core/dag/DirectedAcyclicGraphTraversalTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/DirectedAcyclicGraphTraversalTest.java
index 094fb6d..beb9607 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/dag/DirectedAcyclicGraphTraversalTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/DirectedAcyclicGraphTraversalTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import static java.util.Arrays.asList;
 import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/dag/GraphBasedSagaExecutionComponentTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/GraphBasedSagaExecutionComponentTest.java
similarity index 82%
rename from saga-core/src/test/java/io/servicecomb/saga/core/dag/GraphBasedSagaExecutionComponentTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/GraphBasedSagaExecutionComponentTest.java
index 1e07025..8515f93 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/dag/GraphBasedSagaExecutionComponentTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/GraphBasedSagaExecutionComponentTest.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import java.util.concurrent.Executors;
 
-import io.servicecomb.saga.core.PersistentStore;
-import io.servicecomb.saga.core.SagaExecutionComponentTestBase;
-import io.servicecomb.saga.core.application.SagaFactory;
+import org.apache.servicecomb.saga.core.PersistentStore;
+import org.apache.servicecomb.saga.core.SagaExecutionComponentTestBase;
+import org.apache.servicecomb.saga.core.application.SagaFactory;
 
 
 public class GraphBasedSagaExecutionComponentTest extends SagaExecutionComponentTestBase {
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/dag/GraphBuilderTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/GraphBuilderTest.java
similarity index 86%
rename from saga-core/src/test/java/io/servicecomb/saga/core/dag/GraphBuilderTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/GraphBuilderTest.java
index d5cc919..8703c7a 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/dag/GraphBuilderTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/GraphBuilderTest.java
@@ -15,12 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_END_REQUEST;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
-import static io.servicecomb.saga.core.Operation.TYPE_REST;
+import static org.apache.servicecomb.saga.core.Operation.TYPE_REST;
 import static java.util.Collections.emptyMap;
 import static java.util.Collections.emptySet;
 import static java.util.Collections.singleton;
@@ -36,15 +34,17 @@ import static org.mockito.Mockito.when;
 import java.util.Collection;
 import java.util.stream.Collectors;
 
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.SagaException;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaRequestImpl;
+import org.hamcrest.collection.IsIterableContainingInOrder;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import io.servicecomb.saga.core.CompensationImpl;
-import io.servicecomb.saga.core.SagaException;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaRequestImpl;
-import io.servicecomb.saga.core.TransactionImpl;
+import org.apache.servicecomb.saga.core.CompensationImpl;
+import org.apache.servicecomb.saga.core.TransactionImpl;
 
 @SuppressWarnings("unchecked")
 public class GraphBuilderTest {
@@ -101,7 +101,7 @@ public class GraphBuilderTest {
     Collection<Node<SagaRequest>> nodes = traveller.nodes();
 
     traveller.next();
-    assertThat(requestsOf(nodes), contains(SAGA_START_REQUEST));
+    assertThat(requestsOf(nodes), IsIterableContainingInOrder.contains(NoOpSagaRequest.SAGA_START_REQUEST));
     nodes.clear();
 
     traveller.next();
@@ -113,7 +113,7 @@ public class GraphBuilderTest {
     nodes.clear();
 
     traveller.next();
-    assertThat(requestsOf(nodes), contains(SAGA_END_REQUEST));
+    assertThat(requestsOf(nodes), IsIterableContainingInOrder.contains(NoOpSagaRequest.SAGA_END_REQUEST));
   }
 
   @Test
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/dag/GraphCycleDetectorTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/GraphCycleDetectorTest.java
similarity index 97%
rename from saga-core/src/test/java/io/servicecomb/saga/core/dag/GraphCycleDetectorTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/GraphCycleDetectorTest.java
index 8c0a97d..934c54b 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/dag/GraphCycleDetectorTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/GraphCycleDetectorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.core.Is.is;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/core/dag/NodeTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/NodeTest.java
similarity index 98%
rename from saga-core/src/test/java/io/servicecomb/saga/core/dag/NodeTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/NodeTest.java
index 334be2a..2da4ba0 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/core/dag/NodeTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/core/dag/NodeTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core.dag;
+package org.apache.servicecomb.saga.core.dag;
 
 import static java.util.Arrays.asList;
 import static org.hamcrest.Matchers.containsInAnyOrder;
diff --git a/saga-core/src/test/java/io/servicecomb/saga/infrastructure/ContextAwareEventStoreTest.java b/saga-core/src/test/java/org/apache/servicecomb/saga/infrastructure/ContextAwareEventStoreTest.java
similarity index 87%
rename from saga-core/src/test/java/io/servicecomb/saga/infrastructure/ContextAwareEventStoreTest.java
rename to saga-core/src/test/java/org/apache/servicecomb/saga/infrastructure/ContextAwareEventStoreTest.java
index 186d8f6..1216e5f 100644
--- a/saga-core/src/test/java/io/servicecomb/saga/infrastructure/ContextAwareEventStoreTest.java
+++ b/saga-core/src/test/java/org/apache/servicecomb/saga/infrastructure/ContextAwareEventStoreTest.java
@@ -15,16 +15,16 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.infrastructure;
+package org.apache.servicecomb.saga.infrastructure;
 
 import static org.mockito.Mockito.verify;
 
+import org.apache.servicecomb.saga.core.EventStore;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import io.servicecomb.saga.core.EventStore;
-import io.servicecomb.saga.core.SagaContext;
-import io.servicecomb.saga.core.SagaEvent;
+import org.apache.servicecomb.saga.core.SagaContext;
+import org.apache.servicecomb.saga.core.SagaEvent;
 
 public class ContextAwareEventStoreTest {
   private final EventStore underlying = Mockito.mock(EventStore.class);
diff --git a/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/src/test/java/io/servicecomb/saga/demo/tests/ConditionalTransactionIT.java b/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/src/test/java/org/apache/servicecomb/saga/demo/tests/ConditionalTransactionIT.java
similarity index 99%
rename from saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/src/test/java/io/servicecomb/saga/demo/tests/ConditionalTransactionIT.java
rename to saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/src/test/java/org/apache/servicecomb/saga/demo/tests/ConditionalTransactionIT.java
index 2dd7785..d1734d5 100644
--- a/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/src/test/java/io/servicecomb/saga/demo/tests/ConditionalTransactionIT.java
+++ b/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/src/test/java/org/apache/servicecomb/saga/demo/tests/ConditionalTransactionIT.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.tests;
+package org.apache.servicecomb.saga.demo.tests;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.http.ContentType.TEXT;
diff --git a/saga-demo/conditional-transaction-demo/inventory/src/main/java/io/servicecomb/saga/demo/conditional/transaction/inventory/InventoryApplication.java b/saga-demo/conditional-transaction-demo/inventory/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/inventory/InventoryApplication.java
similarity index 93%
rename from saga-demo/conditional-transaction-demo/inventory/src/main/java/io/servicecomb/saga/demo/conditional/transaction/inventory/InventoryApplication.java
rename to saga-demo/conditional-transaction-demo/inventory/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/inventory/InventoryApplication.java
index f71bf45..f0b8e68 100644
--- a/saga-demo/conditional-transaction-demo/inventory/src/main/java/io/servicecomb/saga/demo/conditional/transaction/inventory/InventoryApplication.java
+++ b/saga-demo/conditional-transaction-demo/inventory/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/inventory/InventoryApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.inventory;
+package org.apache.servicecomb.saga.demo.conditional.transaction.inventory;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/saga-demo/conditional-transaction-demo/inventory/src/main/java/io/servicecomb/saga/demo/conditional/transaction/inventory/InventoryController.java b/saga-demo/conditional-transaction-demo/inventory/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/inventory/InventoryController.java
similarity index 97%
rename from saga-demo/conditional-transaction-demo/inventory/src/main/java/io/servicecomb/saga/demo/conditional/transaction/inventory/InventoryController.java
rename to saga-demo/conditional-transaction-demo/inventory/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/inventory/InventoryController.java
index 09a88e5..1f82955 100644
--- a/saga-demo/conditional-transaction-demo/inventory/src/main/java/io/servicecomb/saga/demo/conditional/transaction/inventory/InventoryController.java
+++ b/saga-demo/conditional-transaction-demo/inventory/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/inventory/InventoryController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.inventory;
+package org.apache.servicecomb.saga.demo.conditional.transaction.inventory;
 
 import static org.springframework.http.HttpStatus.BAD_REQUEST;
 import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
diff --git a/saga-demo/conditional-transaction-demo/inventory/src/test/java/io/servicecomb/saga/demo/conditional/transaction/inventory/InventoryControllerTest.java b/saga-demo/conditional-transaction-demo/inventory/src/test/java/org/apache/servicecomb/saga/demo/conditional/transaction/inventory/InventoryControllerTest.java
similarity index 97%
rename from saga-demo/conditional-transaction-demo/inventory/src/test/java/io/servicecomb/saga/demo/conditional/transaction/inventory/InventoryControllerTest.java
rename to saga-demo/conditional-transaction-demo/inventory/src/test/java/org/apache/servicecomb/saga/demo/conditional/transaction/inventory/InventoryControllerTest.java
index ab919ee..d58a610 100644
--- a/saga-demo/conditional-transaction-demo/inventory/src/test/java/io/servicecomb/saga/demo/conditional/transaction/inventory/InventoryControllerTest.java
+++ b/saga-demo/conditional-transaction-demo/inventory/src/test/java/org/apache/servicecomb/saga/demo/conditional/transaction/inventory/InventoryControllerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.inventory;
+package org.apache.servicecomb.saga.demo.conditional.transaction.inventory;
 
 import static org.hamcrest.core.Is.is;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
diff --git a/saga-demo/conditional-transaction-demo/membership/src/main/java/io/servicecomb/saga/demo/conditional/transaction/membership/MembershipApplication.java b/saga-demo/conditional-transaction-demo/membership/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/membership/MembershipApplication.java
similarity index 93%
rename from saga-demo/conditional-transaction-demo/membership/src/main/java/io/servicecomb/saga/demo/conditional/transaction/membership/MembershipApplication.java
rename to saga-demo/conditional-transaction-demo/membership/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/membership/MembershipApplication.java
index 6bc03f1..4be7300 100644
--- a/saga-demo/conditional-transaction-demo/membership/src/main/java/io/servicecomb/saga/demo/conditional/transaction/membership/MembershipApplication.java
+++ b/saga-demo/conditional-transaction-demo/membership/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/membership/MembershipApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.membership;
+package org.apache.servicecomb.saga.demo.conditional.transaction.membership;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/saga-demo/conditional-transaction-demo/membership/src/main/java/io/servicecomb/saga/demo/conditional/transaction/membership/MembershipController.java b/saga-demo/conditional-transaction-demo/membership/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/membership/MembershipController.java
similarity index 97%
rename from saga-demo/conditional-transaction-demo/membership/src/main/java/io/servicecomb/saga/demo/conditional/transaction/membership/MembershipController.java
rename to saga-demo/conditional-transaction-demo/membership/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/membership/MembershipController.java
index 03465b5..f7efc39 100644
--- a/saga-demo/conditional-transaction-demo/membership/src/main/java/io/servicecomb/saga/demo/conditional/transaction/membership/MembershipController.java
+++ b/saga-demo/conditional-transaction-demo/membership/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/membership/MembershipController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.membership;
+package org.apache.servicecomb.saga.demo.conditional.transaction.membership;
 
 import static java.util.Collections.singleton;
 import static org.springframework.http.HttpStatus.FORBIDDEN;
diff --git a/saga-demo/conditional-transaction-demo/payment/src/main/java/io/servicecomb/saga/demo/conditional/transaction/payment/PaymentApplication.java b/saga-demo/conditional-transaction-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/payment/PaymentApplication.java
similarity index 93%
rename from saga-demo/conditional-transaction-demo/payment/src/main/java/io/servicecomb/saga/demo/conditional/transaction/payment/PaymentApplication.java
rename to saga-demo/conditional-transaction-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/payment/PaymentApplication.java
index 6525996..7e0a643 100644
--- a/saga-demo/conditional-transaction-demo/payment/src/main/java/io/servicecomb/saga/demo/conditional/transaction/payment/PaymentApplication.java
+++ b/saga-demo/conditional-transaction-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/payment/PaymentApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.payment;
+package org.apache.servicecomb.saga.demo.conditional.transaction.payment;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/saga-demo/conditional-transaction-demo/payment/src/main/java/io/servicecomb/saga/demo/conditional/transaction/payment/PaymentController.java b/saga-demo/conditional-transaction-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/payment/PaymentController.java
similarity index 97%
rename from saga-demo/conditional-transaction-demo/payment/src/main/java/io/servicecomb/saga/demo/conditional/transaction/payment/PaymentController.java
rename to saga-demo/conditional-transaction-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/payment/PaymentController.java
index 0c620e9..531414b 100644
--- a/saga-demo/conditional-transaction-demo/payment/src/main/java/io/servicecomb/saga/demo/conditional/transaction/payment/PaymentController.java
+++ b/saga-demo/conditional-transaction-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/payment/PaymentController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.payment;
+package org.apache.servicecomb.saga.demo.conditional.transaction.payment;
 
 import static java.util.Collections.singletonMap;
 import static org.springframework.http.HttpStatus.FORBIDDEN;
diff --git a/saga-demo/conditional-transaction-demo/payment/src/test/java/io/servicecomb/saga/demo/conditional/transaction/payment/PaymentControllerTest.java b/saga-demo/conditional-transaction-demo/payment/src/test/java/org/apache/servicecomb/saga/demo/conditional/transaction/payment/PaymentControllerTest.java
similarity index 97%
rename from saga-demo/conditional-transaction-demo/payment/src/test/java/io/servicecomb/saga/demo/conditional/transaction/payment/PaymentControllerTest.java
rename to saga-demo/conditional-transaction-demo/payment/src/test/java/org/apache/servicecomb/saga/demo/conditional/transaction/payment/PaymentControllerTest.java
index 9d9e370..99e6187 100644
--- a/saga-demo/conditional-transaction-demo/payment/src/test/java/io/servicecomb/saga/demo/conditional/transaction/payment/PaymentControllerTest.java
+++ b/saga-demo/conditional-transaction-demo/payment/src/test/java/org/apache/servicecomb/saga/demo/conditional/transaction/payment/PaymentControllerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.payment;
+package org.apache.servicecomb.saga.demo.conditional.transaction.payment;
 
 import static org.hamcrest.core.Is.is;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
diff --git a/saga-demo/conditional-transaction-demo/supplier/src/main/java/io/servicecomb/saga/demo/conditional/transaction/supplier/SupplierApplication.java b/saga-demo/conditional-transaction-demo/supplier/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/supplier/SupplierApplication.java
similarity index 93%
rename from saga-demo/conditional-transaction-demo/supplier/src/main/java/io/servicecomb/saga/demo/conditional/transaction/supplier/SupplierApplication.java
rename to saga-demo/conditional-transaction-demo/supplier/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/supplier/SupplierApplication.java
index 93517ca..e6729d9 100644
--- a/saga-demo/conditional-transaction-demo/supplier/src/main/java/io/servicecomb/saga/demo/conditional/transaction/supplier/SupplierApplication.java
+++ b/saga-demo/conditional-transaction-demo/supplier/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/supplier/SupplierApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.supplier;
+package org.apache.servicecomb.saga.demo.conditional.transaction.supplier;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/saga-demo/conditional-transaction-demo/supplier/src/main/java/io/servicecomb/saga/demo/conditional/transaction/supplier/SupplierController.java b/saga-demo/conditional-transaction-demo/supplier/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/supplier/SupplierController.java
similarity index 96%
rename from saga-demo/conditional-transaction-demo/supplier/src/main/java/io/servicecomb/saga/demo/conditional/transaction/supplier/SupplierController.java
rename to saga-demo/conditional-transaction-demo/supplier/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/supplier/SupplierController.java
index 29d8816..bd71070 100644
--- a/saga-demo/conditional-transaction-demo/supplier/src/main/java/io/servicecomb/saga/demo/conditional/transaction/supplier/SupplierController.java
+++ b/saga-demo/conditional-transaction-demo/supplier/src/main/java/org/apache/servicecomb/saga/demo/conditional/transaction/supplier/SupplierController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.conditional.transaction.supplier;
+package org.apache.servicecomb.saga.demo.conditional.transaction.supplier;
 
 import static java.util.Collections.singleton;
 import static org.springframework.http.HttpStatus.FORBIDDEN;
diff --git a/saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/io/servicecomb/saga/demo/car/rental/CarRentalApplication.java b/saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/org/apache/servicecomb/saga/demo/car/rental/CarRentalApplication.java
similarity index 95%
rename from saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/io/servicecomb/saga/demo/car/rental/CarRentalApplication.java
rename to saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/org/apache/servicecomb/saga/demo/car/rental/CarRentalApplication.java
index fe50416..d3e0e95 100644
--- a/saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/io/servicecomb/saga/demo/car/rental/CarRentalApplication.java
+++ b/saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/org/apache/servicecomb/saga/demo/car/rental/CarRentalApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.car.rental;
+package org.apache.servicecomb.saga.demo.car.rental;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/io/servicecomb/saga/demo/car/rental/CarRentalController.java b/saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/org/apache/servicecomb/saga/demo/car/rental/CarRentalController.java
similarity index 98%
rename from saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/io/servicecomb/saga/demo/car/rental/CarRentalController.java
rename to saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/org/apache/servicecomb/saga/demo/car/rental/CarRentalController.java
index c800983..4a98141 100644
--- a/saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/io/servicecomb/saga/demo/car/rental/CarRentalController.java
+++ b/saga-demo/dependency-free-transaction-demo/car-rental-service/src/main/java/org/apache/servicecomb/saga/demo/car/rental/CarRentalController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.car.rental;
+package org.apache.servicecomb.saga.demo.car.rental;
 
 import static java.util.Arrays.asList;
 import static javax.ws.rs.core.Response.Status.FORBIDDEN;
diff --git a/saga-demo/dependency-free-transaction-demo/demo-tests/src/test/java/io/servicecomb/saga/demo/tests/DemoIT.java b/saga-demo/dependency-free-transaction-demo/demo-tests/src/test/java/org/apache/servicecomb/saga/demo/tests/DemoIT.java
similarity index 99%
rename from saga-demo/dependency-free-transaction-demo/demo-tests/src/test/java/io/servicecomb/saga/demo/tests/DemoIT.java
rename to saga-demo/dependency-free-transaction-demo/demo-tests/src/test/java/org/apache/servicecomb/saga/demo/tests/DemoIT.java
index 6b07879..750b1e4 100644
--- a/saga-demo/dependency-free-transaction-demo/demo-tests/src/test/java/io/servicecomb/saga/demo/tests/DemoIT.java
+++ b/saga-demo/dependency-free-transaction-demo/demo-tests/src/test/java/org/apache/servicecomb/saga/demo/tests/DemoIT.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.tests;
+package org.apache.servicecomb.saga.demo.tests;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.http.ContentType.TEXT;
diff --git a/saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/io/servicecomb/saga/demo/flight/booking/FlightBookingApplication.java b/saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/org/apache/servicecomb/saga/demo/flight/booking/FlightBookingApplication.java
similarity index 95%
rename from saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/io/servicecomb/saga/demo/flight/booking/FlightBookingApplication.java
rename to saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/org/apache/servicecomb/saga/demo/flight/booking/FlightBookingApplication.java
index bfa7d07..5bee98d 100644
--- a/saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/io/servicecomb/saga/demo/flight/booking/FlightBookingApplication.java
+++ b/saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/org/apache/servicecomb/saga/demo/flight/booking/FlightBookingApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.flight.booking;
+package org.apache.servicecomb.saga.demo.flight.booking;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/io/servicecomb/saga/demo/flight/booking/FlightBookingController.java b/saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/org/apache/servicecomb/saga/demo/flight/booking/FlightBookingController.java
similarity index 98%
rename from saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/io/servicecomb/saga/demo/flight/booking/FlightBookingController.java
rename to saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/org/apache/servicecomb/saga/demo/flight/booking/FlightBookingController.java
index 934781c..37184ac 100644
--- a/saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/io/servicecomb/saga/demo/flight/booking/FlightBookingController.java
+++ b/saga-demo/dependency-free-transaction-demo/flight-booking-service/src/main/java/org/apache/servicecomb/saga/demo/flight/booking/FlightBookingController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.flight.booking;
+package org.apache.servicecomb.saga.demo.flight.booking;
 
 import static java.util.Collections.singleton;
 import static javax.ws.rs.core.Response.Status.FORBIDDEN;
diff --git a/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/io/servicecomb/saga/demo/hotel/reservation/HotelReservationApplication.java b/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/org/apache/servicecomb/saga/demo/hotel/reservation/HotelReservationApplication.java
similarity index 95%
rename from saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/io/servicecomb/saga/demo/hotel/reservation/HotelReservationApplication.java
rename to saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/org/apache/servicecomb/saga/demo/hotel/reservation/HotelReservationApplication.java
index d96da33..b6d3c01 100644
--- a/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/io/servicecomb/saga/demo/hotel/reservation/HotelReservationApplication.java
+++ b/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/org/apache/servicecomb/saga/demo/hotel/reservation/HotelReservationApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.hotel.reservation;
+package org.apache.servicecomb.saga.demo.hotel.reservation;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/io/servicecomb/saga/demo/hotel/reservation/HotelReservationController.java b/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/org/apache/servicecomb/saga/demo/hotel/reservation/HotelReservationController.java
similarity index 98%
rename from saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/io/servicecomb/saga/demo/hotel/reservation/HotelReservationController.java
rename to saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/org/apache/servicecomb/saga/demo/hotel/reservation/HotelReservationController.java
index b28cfbe..dfe00d8 100644
--- a/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/io/servicecomb/saga/demo/hotel/reservation/HotelReservationController.java
+++ b/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/src/main/java/org/apache/servicecomb/saga/demo/hotel/reservation/HotelReservationController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.hotel.reservation;
+package org.apache.servicecomb.saga.demo.hotel.reservation;
 
 import static java.util.Collections.singleton;
 import static javax.ws.rs.core.Response.Status.FORBIDDEN;
diff --git a/saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/io/servicecomb/saga/demo/payment/PaymentApplication.java b/saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/org/apache/servicecomb/saga/demo/payment/PaymentApplication.java
similarity index 95%
rename from saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/io/servicecomb/saga/demo/payment/PaymentApplication.java
rename to saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/org/apache/servicecomb/saga/demo/payment/PaymentApplication.java
index d750c0a..4395c22 100644
--- a/saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/io/servicecomb/saga/demo/payment/PaymentApplication.java
+++ b/saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/org/apache/servicecomb/saga/demo/payment/PaymentApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.payment;
+package org.apache.servicecomb.saga.demo.payment;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/io/servicecomb/saga/demo/payment/PaymentController.java b/saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/org/apache/servicecomb/saga/demo/payment/PaymentController.java
similarity index 98%
rename from saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/io/servicecomb/saga/demo/payment/PaymentController.java
rename to saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/org/apache/servicecomb/saga/demo/payment/PaymentController.java
index 7ebc6db..cf1e774 100644
--- a/saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/io/servicecomb/saga/demo/payment/PaymentController.java
+++ b/saga-demo/dependency-free-transaction-demo/payment-service/src/main/java/org/apache/servicecomb/saga/demo/payment/PaymentController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.demo.payment;
+package org.apache.servicecomb.saga.demo.payment;
 
 import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
 import static javax.ws.rs.core.Response.Status.FORBIDDEN;
diff --git a/saga-discovery/saga-discovery-servicecenter/src/main/java/io/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryConfig.java b/saga-discovery/saga-discovery-servicecenter/src/main/java/org/apache/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryConfig.java
similarity index 84%
rename from saga-discovery/saga-discovery-servicecenter/src/main/java/io/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryConfig.java
rename to saga-discovery/saga-discovery-servicecenter/src/main/java/org/apache/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryConfig.java
index 09b5f91..11110ef 100644
--- a/saga-discovery/saga-discovery-servicecenter/src/main/java/io/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryConfig.java
+++ b/saga-discovery/saga-discovery-servicecenter/src/main/java/org/apache/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryConfig.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.discovery.service.center;
+package org.apache.servicecomb.saga.discovery.service.center;
 
 import org.springframework.boot.autoconfigure.AutoConfigureBefore;
 import org.springframework.context.annotation.Bean;
@@ -23,9 +23,9 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Profile;
 
 import io.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
-import io.servicecomb.saga.transports.HttpClientTransportConfig;
-import io.servicecomb.saga.transports.RestTransport;
-import io.servicecomb.saga.transports.resttemplate.RestTemplateTransport;
+import org.apache.servicecomb.saga.transports.HttpClientTransportConfig;
+import org.apache.servicecomb.saga.transports.RestTransport;
+import org.apache.servicecomb.saga.transports.resttemplate.RestTemplateTransport;
 import io.servicecomb.springboot.starter.provider.EnableServiceComb;
 
 @EnableServiceComb
diff --git a/saga-discovery/saga-discovery-servicecenter/src/main/resources/META-INF/spring.factories b/saga-discovery/saga-discovery-servicecenter/src/main/resources/META-INF/spring.factories
index 0f78baf..b199c22 100644
--- a/saga-discovery/saga-discovery-servicecenter/src/main/resources/META-INF/spring.factories
+++ b/saga-discovery/saga-discovery-servicecenter/src/main/resources/META-INF/spring.factories
@@ -15,4 +15,4 @@
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-  io.servicecomb.saga.discovery.service.center.ServiceCenterDiscoveryConfig
+  org.apache.servicecomb.saga.discovery.service.center.ServiceCenterDiscoveryConfig
diff --git a/saga-discovery/saga-discovery-servicecenter/src/test/java/io/servicecomb/saga/discovery/service/center/DummyController.java b/saga-discovery/saga-discovery-servicecenter/src/test/java/org/apache/servicecomb/saga/discovery/service/center/DummyController.java
similarity index 97%
rename from saga-discovery/saga-discovery-servicecenter/src/test/java/io/servicecomb/saga/discovery/service/center/DummyController.java
rename to saga-discovery/saga-discovery-servicecenter/src/test/java/org/apache/servicecomb/saga/discovery/service/center/DummyController.java
index cd65161..710806d 100644
--- a/saga-discovery/saga-discovery-servicecenter/src/test/java/io/servicecomb/saga/discovery/service/center/DummyController.java
+++ b/saga-discovery/saga-discovery-servicecenter/src/test/java/org/apache/servicecomb/saga/discovery/service/center/DummyController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.discovery.service.center;
+package org.apache.servicecomb.saga.discovery.service.center;
 
 import static org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED_VALUE;
 import static org.springframework.web.bind.annotation.RequestMethod.GET;
diff --git a/saga-discovery/saga-discovery-servicecenter/src/test/java/io/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryApplication.java b/saga-discovery/saga-discovery-servicecenter/src/test/java/org/apache/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryApplication.java
similarity index 95%
rename from saga-discovery/saga-discovery-servicecenter/src/test/java/io/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryApplication.java
rename to saga-discovery/saga-discovery-servicecenter/src/test/java/org/apache/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryApplication.java
index 471ac82..027b441 100644
--- a/saga-discovery/saga-discovery-servicecenter/src/test/java/io/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryApplication.java
+++ b/saga-discovery/saga-discovery-servicecenter/src/test/java/org/apache/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.discovery.service.center;
+package org.apache.servicecomb.saga.discovery.service.center;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/saga-discovery/saga-discovery-servicecenter/src/test/java/io/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryRestTransportTest.java b/saga-discovery/saga-discovery-servicecenter/src/test/java/org/apache/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryRestTransportTest.java
similarity index 91%
rename from saga-discovery/saga-discovery-servicecenter/src/test/java/io/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryRestTransportTest.java
rename to saga-discovery/saga-discovery-servicecenter/src/test/java/org/apache/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryRestTransportTest.java
index 0e46e09..6bfa7ae 100644
--- a/saga-discovery/saga-discovery-servicecenter/src/test/java/io/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryRestTransportTest.java
+++ b/saga-discovery/saga-discovery-servicecenter/src/test/java/org/apache/servicecomb/saga/discovery/service/center/ServiceCenterDiscoveryRestTransportTest.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.discovery.service.center;
+package org.apache.servicecomb.saga.discovery.service.center;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
-import static io.servicecomb.saga.discovery.service.center.ServiceCenterDiscoveryConfig.PROTOCOL;
 import static io.servicecomb.serviceregistry.client.LocalServiceRegistryClientImpl.LOCAL_REGISTRY_FILE_KEY;
 import static java.util.Collections.emptyMap;
 import static java.util.Collections.singletonMap;
@@ -32,6 +31,9 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.transports.RestTransport;
+import org.apache.servicecomb.saga.transports.resttemplate.RestTemplateTransport;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -39,10 +41,8 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import io.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.TransportFailedException;
-import io.servicecomb.saga.transports.RestTransport;
-import io.servicecomb.saga.transports.resttemplate.RestTemplateTransport;
+
+import org.apache.servicecomb.saga.core.TransportFailedException;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = ServiceCenterDiscoveryApplication.class, webEnvironment = RANDOM_PORT)
@@ -53,7 +53,7 @@ public class ServiceCenterDiscoveryRestTransportTest {
   private static final String usableResponse = "foo bar, hello world";
   private static final String json = "{\"hello\", \"world\"}";
 
-  private final RestTransport transport = new RestTemplateTransport(RestTemplateBuilder.create(), PROTOCOL);
+  private final RestTransport transport = new RestTemplateTransport(RestTemplateBuilder.create(), ServiceCenterDiscoveryConfig.PROTOCOL);
   private final String serviceName = "saga-service";
 
   @BeforeClass
diff --git a/saga-format/src/main/java/io/servicecomb/saga/core/FailedSagaRequestContext.java b/saga-format/src/main/java/org/apache/servicecomb/saga/core/FailedSagaRequestContext.java
similarity index 88%
rename from saga-format/src/main/java/io/servicecomb/saga/core/FailedSagaRequestContext.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/core/FailedSagaRequestContext.java
index 79202a3..92d6039 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/core/FailedSagaRequestContext.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/core/FailedSagaRequestContext.java
@@ -15,11 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
+
+import org.apache.servicecomb.saga.format.JsonFailedSagaResponse;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.servicecomb.saga.format.JsonFailedSagaResponse;
-import io.servicecomb.saga.format.JsonSagaRequest;
+
+import org.apache.servicecomb.saga.format.JsonSagaRequest;
 
 public class FailedSagaRequestContext extends SagaRequestContext {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/core/JacksonToJsonFormat.java b/saga-format/src/main/java/org/apache/servicecomb/saga/core/JacksonToJsonFormat.java
similarity index 98%
rename from saga-format/src/main/java/io/servicecomb/saga/core/JacksonToJsonFormat.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/core/JacksonToJsonFormat.java
index 02f91f4..c00ce4a 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/core/JacksonToJsonFormat.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/core/JacksonToJsonFormat.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.ANY;
 import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
diff --git a/saga-format/src/main/java/io/servicecomb/saga/core/SagaRequestContext.java b/saga-format/src/main/java/org/apache/servicecomb/saga/core/SagaRequestContext.java
similarity index 96%
rename from saga-format/src/main/java/io/servicecomb/saga/core/SagaRequestContext.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/core/SagaRequestContext.java
index a427386..2e37617 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/core/SagaRequestContext.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/core/SagaRequestContext.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 public class SagaRequestContext {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/core/SuccessfulSagaRequestContext.java b/saga-format/src/main/java/org/apache/servicecomb/saga/core/SuccessfulSagaRequestContext.java
similarity index 88%
rename from saga-format/src/main/java/io/servicecomb/saga/core/SuccessfulSagaRequestContext.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/core/SuccessfulSagaRequestContext.java
index 9e6f4c3..f794a91 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/core/SuccessfulSagaRequestContext.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/core/SuccessfulSagaRequestContext.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.core;
+package org.apache.servicecomb.saga.core;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-import io.servicecomb.saga.format.JsonSagaRequest;
-import io.servicecomb.saga.format.JsonSuccessfulSagaResponse;
+import org.apache.servicecomb.saga.format.JsonSagaRequest;
+import org.apache.servicecomb.saga.format.JsonSuccessfulSagaResponse;
 
 public class SuccessfulSagaRequestContext extends SagaRequestContext {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/ChildrenExtractor.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/ChildrenExtractor.java
similarity index 90%
rename from saga-format/src/main/java/io/servicecomb/saga/format/ChildrenExtractor.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/ChildrenExtractor.java
index 3625550..cfd3b1c 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/ChildrenExtractor.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/ChildrenExtractor.java
@@ -15,17 +15,18 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import java.io.IOException;
 import java.util.HashSet;
 import java.util.Set;
 
+import org.apache.servicecomb.saga.core.SagaException;
+
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 
-import io.servicecomb.saga.core.SagaException;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
 
 public class ChildrenExtractor implements FromJsonFormat<Set<String>> {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonFallback.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonFallback.java
similarity index 78%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JacksonFallback.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonFallback.java
index 6e48212..443ba66 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonFallback.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonFallback.java
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
-import static io.servicecomb.saga.core.Operation.TYPE_NOP;
-import static io.servicecomb.saga.core.Operation.TYPE_REST;
+import org.apache.servicecomb.saga.core.Fallback;
+import org.apache.servicecomb.saga.core.Operation;
+import org.apache.servicecomb.saga.transports.TransportFactory;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -26,10 +27,7 @@ import com.fasterxml.jackson.annotation.JsonSubTypes;
 import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 
-import io.servicecomb.saga.core.Fallback;
-import io.servicecomb.saga.core.Operation;
-import io.servicecomb.saga.format.JacksonFallback.NopJacksonFallback;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.format.JacksonFallback.NopJacksonFallback;
 
 @JsonTypeInfo(
     use = JsonTypeInfo.Id.NAME,
@@ -37,8 +35,8 @@ import io.servicecomb.saga.transports.TransportFactory;
     visible = true,
     property = "type")
 @JsonSubTypes({
-    @Type(value = JacksonRestFallback.class, name = TYPE_REST),
-    @Type(value = NopJacksonFallback.class, name = TYPE_NOP)
+    @Type(value = JacksonRestFallback.class, name = Operation.TYPE_REST),
+    @Type(value = NopJacksonFallback.class, name = Operation.TYPE_NOP)
 })
 public interface JacksonFallback extends Fallback, TransportAware {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonFromJsonFormat.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormat.java
similarity index 85%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JacksonFromJsonFormat.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormat.java
index 3a2bc95..c26a82f 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonFromJsonFormat.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormat.java
@@ -15,16 +15,18 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import java.io.IOException;
 
+import org.apache.servicecomb.saga.transports.TransportFactory;
+
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import io.servicecomb.saga.core.SagaDefinition;
-import io.servicecomb.saga.core.SagaException;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.core.SagaDefinition;
+import org.apache.servicecomb.saga.core.SagaException;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestCompensation.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestCompensation.java
similarity index 94%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestCompensation.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestCompensation.java
index 99269c8..1837563 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestCompensation.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestCompensation.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import java.util.Map;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-import io.servicecomb.saga.core.Compensation;
+import org.apache.servicecomb.saga.core.Compensation;
 
 public class JacksonRestCompensation extends JacksonRestOperation implements Compensation {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestFallback.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestFallback.java
similarity index 96%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestFallback.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestFallback.java
index 3f50286..35c54fe 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestFallback.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestFallback.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import java.util.Map;
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestOperation.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestOperation.java
similarity index 86%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestOperation.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestOperation.java
index fe4fd90..4d42451 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestOperation.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestOperation.java
@@ -15,17 +15,18 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.servicecomb.saga.transports.TransportFactory;
+
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
-import io.servicecomb.saga.core.RestOperation;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.transports.RestTransport;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.core.RestOperation;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.transports.RestTransport;
 
 class JacksonRestOperation extends RestOperation implements TransportAware {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestTransaction.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestTransaction.java
similarity index 92%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestTransaction.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestTransaction.java
index 68673ee..4ea6d8c 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonRestTransaction.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonRestTransaction.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import java.util.Map;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-import io.servicecomb.saga.core.Transaction;
+import org.apache.servicecomb.saga.core.Transaction;
 
 public class JacksonRestTransaction extends JacksonRestOperation implements Transaction {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonSagaEventFormat.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSagaEventFormat.java
similarity index 82%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JacksonSagaEventFormat.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSagaEventFormat.java
index 2d451be..1b416aa 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JacksonSagaEventFormat.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSagaEventFormat.java
@@ -15,29 +15,28 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
-
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_END_REQUEST;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
+package org.apache.servicecomb.saga.format;
 
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.BiFunction;
 
+import org.apache.servicecomb.saga.core.FailedSagaRequestContext;
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.SagaEvent;
+import org.apache.servicecomb.saga.core.SagaException;
+import org.apache.servicecomb.saga.core.SagaStartedEvent;
+import org.apache.servicecomb.saga.core.SuccessfulSagaRequestContext;
+import org.apache.servicecomb.saga.core.TransactionAbortedEvent;
+import org.apache.servicecomb.saga.core.TransactionCompensatedEvent;
+import org.apache.servicecomb.saga.core.TransactionStartedEvent;
+import org.apache.servicecomb.saga.transports.TransportFactory;
+
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import io.servicecomb.saga.core.FailedSagaRequestContext;
-import io.servicecomb.saga.core.SagaEndedEvent;
-import io.servicecomb.saga.core.SagaEvent;
-import io.servicecomb.saga.core.SagaException;
-import io.servicecomb.saga.core.SagaStartedEvent;
-import io.servicecomb.saga.core.SuccessfulSagaRequestContext;
-import io.servicecomb.saga.core.TransactionAbortedEvent;
-import io.servicecomb.saga.core.TransactionCompensatedEvent;
-import io.servicecomb.saga.core.TransactionEndedEvent;
-import io.servicecomb.saga.core.TransactionStartedEvent;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.core.SagaEndedEvent;
+import org.apache.servicecomb.saga.core.TransactionEndedEvent;
 
 public class JacksonSagaEventFormat implements SagaEventFormat {
   private final Map<String, BiFunction<String, String, SagaEvent>> eventFactories = new HashMap<String, BiFunction<String, String, SagaEvent>>() {{
@@ -65,7 +64,7 @@ public class JacksonSagaEventFormat implements SagaEventFormat {
     return new SagaStartedEvent(
         sagaId,
         json,
-        SAGA_START_REQUEST);
+        NoOpSagaRequest.SAGA_START_REQUEST);
   }
 
   private SagaEvent transactionStartedEvent(String sagaId, String json) {
@@ -106,7 +105,7 @@ public class JacksonSagaEventFormat implements SagaEventFormat {
   private SagaEvent sagaEndedEvent(String sagaId) {
     return new SagaEndedEvent(
         sagaId,
-        SAGA_END_REQUEST);
+        NoOpSagaRequest.SAGA_END_REQUEST);
   }
 
   private String cause(String sagaId, String json) {
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JsonFailedSagaResponse.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonFailedSagaResponse.java
similarity index 90%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JsonFailedSagaResponse.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonFailedSagaResponse.java
index a00f27e..16ada6e 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JsonFailedSagaResponse.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonFailedSagaResponse.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-import io.servicecomb.saga.core.FailedSagaResponse;
+import org.apache.servicecomb.saga.core.FailedSagaResponse;
 
 public class JsonFailedSagaResponse extends FailedSagaResponse {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JsonRestSagaRequest.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonRestSagaRequest.java
similarity index 88%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JsonRestSagaRequest.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonRestSagaRequest.java
index b09f160..9660eb4 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JsonRestSagaRequest.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonRestSagaRequest.java
@@ -15,16 +15,17 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
-import static io.servicecomb.saga.format.JacksonFallback.NOP_TRANSPORT_AWARE_FALLBACK;
+import static org.apache.servicecomb.saga.format.JacksonFallback.NOP_TRANSPORT_AWARE_FALLBACK;
+
+import org.apache.servicecomb.saga.core.SagaRequestImpl;
+import org.apache.servicecomb.saga.transports.TransportFactory;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-import io.servicecomb.saga.core.Operation;
-import io.servicecomb.saga.core.SagaRequestImpl;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.core.Operation;
 
 public class JsonRestSagaRequest extends SagaRequestImpl implements JsonSagaRequest {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JsonSagaDefinition.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonSagaDefinition.java
similarity index 75%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JsonSagaDefinition.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonSagaDefinition.java
index 82aad81..5293a13 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JsonSagaDefinition.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonSagaDefinition.java
@@ -15,28 +15,26 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
-
-import static io.servicecomb.saga.core.RecoveryPolicy.SAGA_BACKWARD_RECOVERY_POLICY;
-import static io.servicecomb.saga.core.RecoveryPolicy.SAGA_FORWARD_RECOVERY_POLICY;
+package org.apache.servicecomb.saga.format;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.servicecomb.saga.core.ForwardRecovery;
+import org.apache.servicecomb.saga.core.RecoveryPolicy;
+
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-import io.servicecomb.saga.core.BackwardRecovery;
-import io.servicecomb.saga.core.ForwardRecovery;
-import io.servicecomb.saga.core.RecoveryPolicy;
-import io.servicecomb.saga.core.SagaDefinition;
+import org.apache.servicecomb.saga.core.BackwardRecovery;
+import org.apache.servicecomb.saga.core.SagaDefinition;
 
 class JsonSagaDefinition implements SagaDefinition {
 
   static final RecoveryPolicy backwardRecovery = new BackwardRecovery();
 
   private static final Map<String, RecoveryPolicy> policies = new HashMap<String, RecoveryPolicy>(){{
-    put(SAGA_BACKWARD_RECOVERY_POLICY, backwardRecovery);
-    put(SAGA_FORWARD_RECOVERY_POLICY, new ForwardRecovery());
+    put(RecoveryPolicy.SAGA_BACKWARD_RECOVERY_POLICY, backwardRecovery);
+    put(RecoveryPolicy.SAGA_FORWARD_RECOVERY_POLICY, new ForwardRecovery());
   }};
 
   private final JsonSagaRequest[] requests;
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JsonSagaRequest.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonSagaRequest.java
similarity index 81%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JsonSagaRequest.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonSagaRequest.java
index 11fc8c2..45d3981 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JsonSagaRequest.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonSagaRequest.java
@@ -15,24 +15,23 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
-import static io.servicecomb.saga.core.Operation.TYPE_REST;
+import org.apache.servicecomb.saga.core.Operation;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.transports.TransportFactory;
 
 import com.fasterxml.jackson.annotation.JsonSubTypes;
 import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.transports.TransportFactory;
-
 @JsonTypeInfo(
     use = JsonTypeInfo.Id.NAME,
     include = JsonTypeInfo.As.PROPERTY,
     visible = true,
     property = "type")
 @JsonSubTypes({
-    @Type(value = JsonRestSagaRequest.class, name = TYPE_REST)
+    @Type(value = JsonRestSagaRequest.class, name = Operation.TYPE_REST)
 })
 public interface JsonSagaRequest extends SagaRequest {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/JsonSuccessfulSagaResponse.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonSuccessfulSagaResponse.java
similarity index 90%
rename from saga-format/src/main/java/io/servicecomb/saga/format/JsonSuccessfulSagaResponse.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonSuccessfulSagaResponse.java
index 27006e6..273fc3d 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/JsonSuccessfulSagaResponse.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JsonSuccessfulSagaResponse.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-import io.servicecomb.saga.core.SuccessfulSagaResponse;
+import org.apache.servicecomb.saga.core.SuccessfulSagaResponse;
 
 public class JsonSuccessfulSagaResponse extends SuccessfulSagaResponse {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/SagaEventFormat.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/SagaEventFormat.java
similarity index 90%
rename from saga-format/src/main/java/io/servicecomb/saga/format/SagaEventFormat.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/SagaEventFormat.java
index 24d029a..d035e96 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/SagaEventFormat.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/SagaEventFormat.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
-import io.servicecomb.saga.core.SagaEvent;
+import org.apache.servicecomb.saga.core.SagaEvent;
 
 public interface SagaEventFormat {
 
diff --git a/saga-format/src/main/java/io/servicecomb/saga/format/TransportAware.java b/saga-format/src/main/java/org/apache/servicecomb/saga/format/TransportAware.java
similarity index 84%
rename from saga-format/src/main/java/io/servicecomb/saga/format/TransportAware.java
rename to saga-format/src/main/java/org/apache/servicecomb/saga/format/TransportAware.java
index 1b5e3c9..edcabf7 100644
--- a/saga-format/src/main/java/io/servicecomb/saga/format/TransportAware.java
+++ b/saga-format/src/main/java/org/apache/servicecomb/saga/format/TransportAware.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
-import io.servicecomb.saga.core.Operation;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.core.Operation;
 
 interface TransportAware {
 
diff --git a/saga-format/src/test/java/io/servicecomb/saga/format/ChildrenExtractorTest.java b/saga-format/src/test/java/org/apache/servicecomb/saga/format/ChildrenExtractorTest.java
similarity index 90%
rename from saga-format/src/test/java/io/servicecomb/saga/format/ChildrenExtractorTest.java
rename to saga-format/src/test/java/org/apache/servicecomb/saga/format/ChildrenExtractorTest.java
index 4f14036..1dad361 100644
--- a/saga-format/src/test/java/io/servicecomb/saga/format/ChildrenExtractorTest.java
+++ b/saga-format/src/test/java/org/apache/servicecomb/saga/format/ChildrenExtractorTest.java
@@ -15,19 +15,19 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
-import static io.servicecomb.saga.core.SagaResponse.NONE_RESPONSE;
 import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
 
 import java.util.Set;
 
+import org.apache.servicecomb.saga.core.SagaResponse;
 import org.junit.Test;
 
-import io.servicecomb.saga.core.SagaException;
+import org.apache.servicecomb.saga.core.SagaException;
 
 public class ChildrenExtractorTest {
 
@@ -58,7 +58,7 @@ public class ChildrenExtractorTest {
 
   @Test
   public void emptyChildrenIfNoneResponse() throws Exception {
-    Set<String> children = extractor.fromJson(NONE_RESPONSE.body());
+    Set<String> children = extractor.fromJson(SagaResponse.NONE_RESPONSE.body());
 
     assertThat(children, containsInAnyOrder("none"));
   }
diff --git a/saga-format/src/test/java/io/servicecomb/saga/format/JacksonFromJsonFormatTest.java b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormatTest.java
similarity index 91%
rename from saga-format/src/test/java/io/servicecomb/saga/format/JacksonFromJsonFormatTest.java
rename to saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormatTest.java
index 9da52c4..bbf7510 100644
--- a/saga-format/src/test/java/io/servicecomb/saga/format/JacksonFromJsonFormatTest.java
+++ b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormatTest.java
@@ -15,10 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.core.Operation.TYPE_REST;
 import static java.util.Collections.emptyMap;
 import static java.util.Collections.singletonMap;
 import static org.hamcrest.Matchers.contains;
@@ -35,20 +34,22 @@ import java.util.Map;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import org.apache.servicecomb.saga.core.Operation;
+import org.apache.servicecomb.saga.core.SagaException;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SuccessfulSagaResponse;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.transports.RestTransport;
+import org.apache.servicecomb.saga.transports.TransportFactory;
+import org.hamcrest.Matchers;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
 import com.seanyinx.github.unit.scaffolding.AssertUtils;
 
-import io.servicecomb.saga.core.SagaDefinition;
-import io.servicecomb.saga.core.SagaException;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SuccessfulSagaResponse;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
-import io.servicecomb.saga.transports.RestTransport;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.core.SagaDefinition;
 
 public class JacksonFromJsonFormatTest {
 
@@ -191,9 +192,11 @@ public class JacksonFromJsonFormatTest {
 
     assertThat(collect(sagaRequests, SagaRequest::id), contains("request-aaa", "request-bbb", "request-ccc"));
     assertThat(collect(sagaRequests, SagaRequest::serviceName), contains("aaa", "bbb", "ccc"));
-    assertThat(collect(sagaRequests, SagaRequest::type), contains(TYPE_REST, TYPE_REST, TYPE_REST));
+    assertThat(collect(sagaRequests, SagaRequest::type), Matchers
+        .contains(Operation.TYPE_REST, Operation.TYPE_REST, Operation.TYPE_REST));
     assertThat(collect(sagaRequests, (request) -> request.compensation().retries()), contains(3, 4, 5));
-    assertThat(collect(sagaRequests, (request) -> request.fallback().type()), contains(TYPE_REST, TYPE_REST, TYPE_REST));
+    assertThat(collect(sagaRequests, (request) -> request.fallback().type()), Matchers
+        .contains(Operation.TYPE_REST, Operation.TYPE_REST, Operation.TYPE_REST));
 
     SagaResponse response = sagaRequests[0].transaction().send("aaa");
     assertThat(response, is(response11));
diff --git a/saga-format/src/test/java/io/servicecomb/saga/format/JacksonRestOperationTest.java b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonRestOperationTest.java
similarity index 80%
rename from saga-format/src/test/java/io/servicecomb/saga/format/JacksonRestOperationTest.java
rename to saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonRestOperationTest.java
index cb370e3..5c890a6 100644
--- a/saga-format/src/test/java/io/servicecomb/saga/format/JacksonRestOperationTest.java
+++ b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonRestOperationTest.java
@@ -15,11 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.core.Operation.SUCCESSFUL_SAGA_RESPONSE;
-import static io.servicecomb.saga.core.SagaResponse.EMPTY_RESPONSE;
 import static java.util.Collections.emptyMap;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
@@ -29,14 +27,15 @@ import static org.mockito.Mockito.when;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.servicecomb.saga.core.Operation;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.transports.RestTransport;
+import org.hamcrest.core.Is;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.transports.RestTransport;
-
 @SuppressWarnings("unchecked")
 public class JacksonRestOperationTest {
 
@@ -56,14 +55,15 @@ public class JacksonRestOperationTest {
   @Test
   public void appendsResponseToForm() throws Exception {
     ArgumentCaptor<Map> argumentCaptor = ArgumentCaptor.forClass(Map.class);
-    when(transport.with(eq(address), eq(path), eq(method), argumentCaptor.capture())).thenReturn(EMPTY_RESPONSE);
+    when(transport.with(eq(address), eq(path), eq(method), argumentCaptor.capture())).thenReturn(
+        SagaResponse.EMPTY_RESPONSE);
 
-    SagaResponse response = restOperation.send(address, SUCCESSFUL_SAGA_RESPONSE);
+    SagaResponse response = restOperation.send(address, Operation.SUCCESSFUL_SAGA_RESPONSE);
 
-    assertThat(response, is(EMPTY_RESPONSE));
+    assertThat(response, Is.is(SagaResponse.EMPTY_RESPONSE));
 
     Map<String, Map<String, String>> updatedParams = argumentCaptor.getValue();
-    assertThat(updatedParams.getOrDefault("form", emptyMap()).get("response"), is(SUCCESSFUL_SAGA_RESPONSE.body()));
+    assertThat(updatedParams.getOrDefault("form", emptyMap()).get("response"), Is.is(Operation.SUCCESSFUL_SAGA_RESPONSE.body()));
     assertThat(params.isEmpty(), is(true));
   }
 }
diff --git a/saga-format/src/test/java/io/servicecomb/saga/format/JsonRestSagaRequestTest.java b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JsonRestSagaRequestTest.java
similarity index 90%
rename from saga-format/src/test/java/io/servicecomb/saga/format/JsonRestSagaRequestTest.java
rename to saga-format/src/test/java/org/apache/servicecomb/saga/format/JsonRestSagaRequestTest.java
index e03653c..7c0896d 100644
--- a/saga-format/src/test/java/io/servicecomb/saga/format/JsonRestSagaRequestTest.java
+++ b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JsonRestSagaRequestTest.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import static com.seanyinx.github.unit.scaffolding.AssertUtils.expectFailing;
 import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify;
-import static io.servicecomb.saga.core.Operation.TYPE_REST;
-import static io.servicecomb.saga.format.JacksonFallback.NOP_TRANSPORT_AWARE_FALLBACK;
+import static org.apache.servicecomb.saga.core.Operation.TYPE_REST;
+import static org.apache.servicecomb.saga.format.JacksonFallback.NOP_TRANSPORT_AWARE_FALLBACK;
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Matchers.anyMap;
@@ -29,11 +29,11 @@ import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import org.apache.servicecomb.saga.transports.TransportFactory;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import io.servicecomb.saga.transports.RestTransport;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.transports.RestTransport;
 
 public class JsonRestSagaRequestTest {
 
diff --git a/saga-format/src/test/java/io/servicecomb/saga/format/JsonSagaDefinitionTest.java b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JsonSagaDefinitionTest.java
similarity index 87%
rename from saga-format/src/test/java/io/servicecomb/saga/format/JsonSagaDefinitionTest.java
rename to saga-format/src/test/java/org/apache/servicecomb/saga/format/JsonSagaDefinitionTest.java
index cf1ce92..6228b66 100644
--- a/saga-format/src/test/java/io/servicecomb/saga/format/JsonSagaDefinitionTest.java
+++ b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JsonSagaDefinitionTest.java
@@ -15,11 +15,12 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
 
+import org.hamcrest.core.Is;
 import org.junit.Test;
 
 public class JsonSagaDefinitionTest {
@@ -28,6 +29,6 @@ public class JsonSagaDefinitionTest {
   public void backwardRecoveryIfNoPolicyProvided() {
     JsonSagaDefinition definition = new JsonSagaDefinition(null, new JsonSagaRequest[0]);
 
-    assertThat(definition.policy(), is(JsonSagaDefinition.backwardRecovery));
+    assertThat(definition.policy(), Is.is(JsonSagaDefinition.backwardRecovery));
   }
 }
diff --git a/saga-format/src/test/java/io/servicecomb/saga/format/SagaEventFormatTest.java b/saga-format/src/test/java/org/apache/servicecomb/saga/format/SagaEventFormatTest.java
similarity index 86%
rename from saga-format/src/test/java/io/servicecomb/saga/format/SagaEventFormatTest.java
rename to saga-format/src/test/java/org/apache/servicecomb/saga/format/SagaEventFormatTest.java
index 2bde088..9bad69c 100644
--- a/saga-format/src/test/java/io/servicecomb/saga/format/SagaEventFormatTest.java
+++ b/saga-format/src/test/java/org/apache/servicecomb/saga/format/SagaEventFormatTest.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.format;
+package org.apache.servicecomb.saga.format;
 
-import static io.servicecomb.saga.core.Operation.TYPE_REST;
+import static org.apache.servicecomb.saga.core.Operation.TYPE_REST;
 import static java.util.Collections.emptyMap;
 import static java.util.Collections.singletonMap;
 import static org.hamcrest.core.Is.is;
@@ -28,6 +28,16 @@ import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import org.apache.servicecomb.saga.core.JacksonToJsonFormat;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaRequestImpl;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SuccessfulSagaResponse;
+import org.apache.servicecomb.saga.core.ToJsonFormat;
+import org.apache.servicecomb.saga.core.TransactionCompensatedEvent;
+import org.apache.servicecomb.saga.core.TransactionFailedException;
+import org.apache.servicecomb.saga.core.TransactionStartedEvent;
+import org.apache.servicecomb.saga.transports.TransportFactory;
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
 import org.hamcrest.TypeSafeMatcher;
@@ -39,22 +49,12 @@ import org.mockito.Mockito;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.seanyinx.github.unit.scaffolding.Randomness;
 
-import io.servicecomb.saga.core.FailedSagaResponse;
-import io.servicecomb.saga.core.JacksonToJsonFormat;
-import io.servicecomb.saga.core.RestOperation;
-import io.servicecomb.saga.core.SagaEvent;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaRequestImpl;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SuccessfulSagaResponse;
-import io.servicecomb.saga.core.ToJsonFormat;
-import io.servicecomb.saga.core.TransactionAbortedEvent;
-import io.servicecomb.saga.core.TransactionCompensatedEvent;
-import io.servicecomb.saga.core.TransactionEndedEvent;
-import io.servicecomb.saga.core.TransactionFailedException;
-import io.servicecomb.saga.core.TransactionStartedEvent;
-import io.servicecomb.saga.transports.RestTransport;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.core.FailedSagaResponse;
+import org.apache.servicecomb.saga.core.RestOperation;
+import org.apache.servicecomb.saga.core.SagaEvent;
+import org.apache.servicecomb.saga.core.TransactionAbortedEvent;
+import org.apache.servicecomb.saga.core.TransactionEndedEvent;
+import org.apache.servicecomb.saga.transports.RestTransport;
 
 public class SagaEventFormatTest {
 
diff --git a/saga-spring/src/main/java/io/servicecomb/saga/spring/JpaPersistentStore.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/JpaPersistentStore.java
similarity index 87%
rename from saga-spring/src/main/java/io/servicecomb/saga/spring/JpaPersistentStore.java
rename to saga-spring/src/main/java/org/apache/servicecomb/saga/spring/JpaPersistentStore.java
index 1a1f693..4c6e5f0 100644
--- a/saga-spring/src/main/java/io/servicecomb/saga/spring/JpaPersistentStore.java
+++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/JpaPersistentStore.java
@@ -15,18 +15,19 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
-import io.servicecomb.saga.core.EventEnvelope;
-import io.servicecomb.saga.core.PersistentStore;
-import io.servicecomb.saga.core.SagaEvent;
-import io.servicecomb.saga.core.ToJsonFormat;
-import io.servicecomb.saga.format.SagaEventFormat;
+import org.apache.servicecomb.saga.core.EventEnvelope;
+import org.apache.servicecomb.saga.core.ToJsonFormat;
+import org.apache.servicecomb.saga.format.SagaEventFormat;
+import org.apache.servicecomb.saga.core.PersistentStore;
+import org.apache.servicecomb.saga.core.SagaEvent;
+
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
 
diff --git a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaController.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaController.java
similarity index 97%
rename from saga-spring/src/main/java/io/servicecomb/saga/spring/SagaController.java
rename to saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaController.java
index e7f294a..1a73b7b 100644
--- a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaController.java
+++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.ANY;
 import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
@@ -34,6 +34,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.servicecomb.saga.core.SagaResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
@@ -46,9 +47,8 @@ import org.springframework.web.bind.annotation.RequestParam;
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 
 import io.servicecomb.provider.rest.common.RestSchema;
-import io.servicecomb.saga.core.SagaException;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.application.SagaExecutionComponent;
+import org.apache.servicecomb.saga.core.SagaException;
+import org.apache.servicecomb.saga.core.application.SagaExecutionComponent;
 import io.servicecomb.swagger.invocation.exception.InvocationException;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
diff --git a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaEventEntity.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventEntity.java
similarity index 98%
rename from saga-spring/src/main/java/io/servicecomb/saga/spring/SagaEventEntity.java
rename to saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventEntity.java
index 7cb9354..420655a 100644
--- a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaEventEntity.java
+++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventEntity.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import java.util.Date;
 
diff --git a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaEventRepo.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventRepo.java
similarity index 97%
rename from saga-spring/src/main/java/io/servicecomb/saga/spring/SagaEventRepo.java
rename to saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventRepo.java
index 345263c..45cfe8c 100644
--- a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaEventRepo.java
+++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaEventRepo.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import java.util.Date;
 import java.util.List;
diff --git a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaExecutionQueryService.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaExecutionQueryService.java
similarity index 86%
rename from saga-spring/src/main/java/io/servicecomb/saga/spring/SagaExecutionQueryService.java
rename to saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaExecutionQueryService.java
index c5b733a..15f8cc5 100644
--- a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaExecutionQueryService.java
+++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaExecutionQueryService.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
 
@@ -33,6 +33,14 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaStartedEvent;
+import org.apache.servicecomb.saga.core.dag.GraphCycleDetectorImpl;
+import org.apache.servicecomb.saga.core.dag.Node;
+import org.apache.servicecomb.saga.core.dag.SingleLeafDirectedAcyclicGraph;
+import org.apache.servicecomb.saga.spring.SagaController.SagaExecution;
+import org.apache.servicecomb.saga.spring.SagaController.SagaExecutionDetail;
+import org.apache.servicecomb.saga.spring.SagaController.SagaExecutionQueryResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
@@ -41,20 +49,13 @@ import org.springframework.stereotype.Service;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import io.servicecomb.saga.core.SagaDefinition;
-import io.servicecomb.saga.core.SagaEndedEvent;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaStartedEvent;
-import io.servicecomb.saga.core.TransactionAbortedEvent;
-import io.servicecomb.saga.core.TransactionEndedEvent;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
-import io.servicecomb.saga.core.dag.GraphBuilder;
-import io.servicecomb.saga.core.dag.GraphCycleDetectorImpl;
-import io.servicecomb.saga.core.dag.Node;
-import io.servicecomb.saga.core.dag.SingleLeafDirectedAcyclicGraph;
-import io.servicecomb.saga.spring.SagaController.SagaExecution;
-import io.servicecomb.saga.spring.SagaController.SagaExecutionDetail;
-import io.servicecomb.saga.spring.SagaController.SagaExecutionQueryResult;
+import org.apache.servicecomb.saga.core.SagaDefinition;
+import org.apache.servicecomb.saga.core.SagaEndedEvent;
+import org.apache.servicecomb.saga.core.TransactionAbortedEvent;
+import org.apache.servicecomb.saga.core.TransactionEndedEvent;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.core.dag.GraphBuilder;
+
 import io.servicecomb.swagger.invocation.exception.InvocationException;
 
 @Service
diff --git a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaRecoveryListener.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaRecoveryListener.java
similarity index 92%
rename from saga-spring/src/main/java/io/servicecomb/saga/spring/SagaRecoveryListener.java
rename to saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaRecoveryListener.java
index 10fbe52..6b6e31d 100644
--- a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaRecoveryListener.java
+++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaRecoveryListener.java
@@ -15,17 +15,16 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import java.lang.invoke.MethodHandles;
 
+import org.apache.servicecomb.saga.core.application.SagaExecutionComponent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.context.event.ApplicationReadyEvent;
 import org.springframework.context.ApplicationListener;
 
-import io.servicecomb.saga.core.application.SagaExecutionComponent;
-
 class SagaRecoveryListener implements ApplicationListener<ApplicationReadyEvent> {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
diff --git a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaShutdownListener.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaShutdownListener.java
similarity index 93%
rename from saga-spring/src/main/java/io/servicecomb/saga/spring/SagaShutdownListener.java
rename to saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaShutdownListener.java
index 6c23420..8ec862e 100644
--- a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaShutdownListener.java
+++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaShutdownListener.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 
-import io.servicecomb.saga.core.application.SagaExecutionComponent;
+import org.apache.servicecomb.saga.core.application.SagaExecutionComponent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.ApplicationListener;
diff --git a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaSpringApplication.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaSpringApplication.java
similarity index 96%
rename from saga-spring/src/main/java/io/servicecomb/saga/spring/SagaSpringApplication.java
rename to saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaSpringApplication.java
index cbb1a96..3e17c14 100644
--- a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaSpringApplication.java
+++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaSpringApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import javax.annotation.PreDestroy;
 
diff --git a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaSpringConfig.java b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaSpringConfig.java
similarity index 79%
rename from saga-spring/src/main/java/io/servicecomb/saga/spring/SagaSpringConfig.java
rename to saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaSpringConfig.java
index b405edc..d40f724 100644
--- a/saga-spring/src/main/java/io/servicecomb/saga/spring/SagaSpringConfig.java
+++ b/saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaSpringConfig.java
@@ -15,33 +15,33 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import java.util.Set;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.servicecomb.saga.core.JacksonToJsonFormat;
+import org.apache.servicecomb.saga.core.ToJsonFormat;
+import org.apache.servicecomb.saga.core.actors.ActorBasedSagaFactory;
+import org.apache.servicecomb.saga.core.application.SagaExecutionComponent;
+import org.apache.servicecomb.saga.core.application.SagaFactory;
+import org.apache.servicecomb.saga.core.dag.GraphBasedSagaFactory;
+import org.apache.servicecomb.saga.format.ChildrenExtractor;
+import org.apache.servicecomb.saga.format.JacksonFromJsonFormat;
+import org.apache.servicecomb.saga.format.SagaEventFormat;
+import org.apache.servicecomb.saga.transports.TransportFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import io.servicecomb.saga.core.JacksonToJsonFormat;
-import io.servicecomb.saga.core.PersistentStore;
-import io.servicecomb.saga.core.SagaDefinition;
-import io.servicecomb.saga.core.ToJsonFormat;
-import io.servicecomb.saga.core.actors.ActorBasedSagaFactory;
-import io.servicecomb.saga.core.application.SagaExecutionComponent;
-import io.servicecomb.saga.core.application.SagaFactory;
-import io.servicecomb.saga.core.application.interpreter.FromJsonFormat;
-import io.servicecomb.saga.core.dag.GraphBasedSagaFactory;
-import io.servicecomb.saga.format.ChildrenExtractor;
-import io.servicecomb.saga.format.JacksonFromJsonFormat;
-import io.servicecomb.saga.format.JacksonSagaEventFormat;
-import io.servicecomb.saga.format.SagaEventFormat;
-import io.servicecomb.saga.transports.RestTransport;
-import io.servicecomb.saga.transports.TransportFactory;
+import org.apache.servicecomb.saga.core.PersistentStore;
+import org.apache.servicecomb.saga.core.SagaDefinition;
+import org.apache.servicecomb.saga.core.application.interpreter.FromJsonFormat;
+import org.apache.servicecomb.saga.format.JacksonSagaEventFormat;
+import org.apache.servicecomb.saga.transports.RestTransport;
 
 @Configuration
 class SagaSpringConfig {
diff --git a/saga-spring/src/main/resources/META-INF/aop.xml b/saga-spring/src/main/resources/META-INF/aop.xml
index fd5de83..c481036 100644
--- a/saga-spring/src/main/resources/META-INF/aop.xml
+++ b/saga-spring/src/main/resources/META-INF/aop.xml
@@ -19,7 +19,7 @@
 
 <aspectj>
   <weaver options="-Xlint:ignore">
-    <include within="io.servicecomb.saga..*"/>
+    <include within="org.apache.servicecomb.saga..*"/>
     <exclude within="org.aspectj.*"/>
   </weaver>
 </aspectj>
diff --git a/saga-spring/src/main/resources/META-INF/spring.factories b/saga-spring/src/main/resources/META-INF/spring.factories
index 1c0c242..ff5b14f 100644
--- a/saga-spring/src/main/resources/META-INF/spring.factories
+++ b/saga-spring/src/main/resources/META-INF/spring.factories
@@ -16,5 +16,5 @@
 ## ---------------------------------------------------------------------------
 
 org.springframework.context.ApplicationListener=\
-  io.servicecomb.saga.spring.SagaRecoveryListener,\
-  io.servicecomb.saga.spring.SagaShutdownListener
+  org.apache.servicecomb.saga.spring.SagaRecoveryListener,\
+  org.apache.servicecomb.saga.spring.SagaShutdownListener
diff --git a/saga-spring/src/test/java/io/servicecomb/saga/spring/ActorBasedSagaSpringApplicationTest.java b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/ActorBasedSagaSpringApplicationTest.java
similarity index 95%
rename from saga-spring/src/test/java/io/servicecomb/saga/spring/ActorBasedSagaSpringApplicationTest.java
rename to saga-spring/src/test/java/org/apache/servicecomb/saga/spring/ActorBasedSagaSpringApplicationTest.java
index 7e86dc6..f882672 100644
--- a/saga-spring/src/test/java/io/servicecomb/saga/spring/ActorBasedSagaSpringApplicationTest.java
+++ b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/ActorBasedSagaSpringApplicationTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import org.springframework.boot.test.context.SpringBootTest;
 
diff --git a/saga-spring/src/test/java/io/servicecomb/saga/spring/GraphBasedSagaSpringApplicationTest.java b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/GraphBasedSagaSpringApplicationTest.java
similarity index 95%
rename from saga-spring/src/test/java/io/servicecomb/saga/spring/GraphBasedSagaSpringApplicationTest.java
rename to saga-spring/src/test/java/org/apache/servicecomb/saga/spring/GraphBasedSagaSpringApplicationTest.java
index b356330..f5fddcb 100644
--- a/saga-spring/src/test/java/io/servicecomb/saga/spring/GraphBasedSagaSpringApplicationTest.java
+++ b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/GraphBasedSagaSpringApplicationTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import org.springframework.boot.test.context.SpringBootTest;
 
diff --git a/saga-spring/src/test/java/io/servicecomb/saga/spring/GreetingController.java b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/GreetingController.java
similarity index 97%
rename from saga-spring/src/test/java/io/servicecomb/saga/spring/GreetingController.java
rename to saga-spring/src/test/java/org/apache/servicecomb/saga/spring/GreetingController.java
index 38eefc9..0710c01 100644
--- a/saga-spring/src/test/java/io/servicecomb/saga/spring/GreetingController.java
+++ b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/GreetingController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import static org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED_VALUE;
 import static org.springframework.web.bind.annotation.RequestMethod.POST;
diff --git a/saga-spring/src/test/java/io/servicecomb/saga/spring/SagaRecoveryTest.java b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/SagaRecoveryTest.java
similarity index 84%
rename from saga-spring/src/test/java/io/servicecomb/saga/spring/SagaRecoveryTest.java
rename to saga-spring/src/test/java/org/apache/servicecomb/saga/spring/SagaRecoveryTest.java
index d63207f..0d1e9c5 100644
--- a/saga-spring/src/test/java/io/servicecomb/saga/spring/SagaRecoveryTest.java
+++ b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/SagaRecoveryTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
@@ -26,9 +26,13 @@ import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static com.github.tomakehurst.wiremock.client.WireMock.verify;
-import static io.servicecomb.saga.core.NoOpSagaRequest.SAGA_START_REQUEST;
 import static java.util.Collections.singletonMap;
 
+import org.apache.servicecomb.saga.core.NoOpSagaRequest;
+import org.apache.servicecomb.saga.core.SagaRequestImpl;
+import org.apache.servicecomb.saga.core.SagaStartedEvent;
+import org.apache.servicecomb.saga.core.ToJsonFormat;
+import org.apache.servicecomb.saga.format.JacksonRestCompensation;
 import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
@@ -43,23 +47,19 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 import com.github.tomakehurst.wiremock.junit.WireMockRule;
 
-import io.servicecomb.saga.core.PersistentStore;
-import io.servicecomb.saga.core.SagaEndedEvent;
-import io.servicecomb.saga.core.SagaRequest;
-import io.servicecomb.saga.core.SagaRequestImpl;
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SagaStartedEvent;
-import io.servicecomb.saga.core.SuccessfulSagaResponse;
-import io.servicecomb.saga.core.ToJsonFormat;
-import io.servicecomb.saga.core.TransactionAbortedEvent;
-import io.servicecomb.saga.core.TransactionCompensatedEvent;
-import io.servicecomb.saga.core.TransactionEndedEvent;
-import io.servicecomb.saga.core.TransactionStartedEvent;
-import io.servicecomb.saga.format.JacksonFallback;
-import io.servicecomb.saga.format.JacksonRestCompensation;
-import io.servicecomb.saga.format.JacksonRestTransaction;
-import io.servicecomb.saga.format.SagaEventFormat;
-import io.servicecomb.saga.spring.SagaRecoveryTest.EventPopulatingConfig;
+import org.apache.servicecomb.saga.core.PersistentStore;
+import org.apache.servicecomb.saga.core.SagaEndedEvent;
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SuccessfulSagaResponse;
+import org.apache.servicecomb.saga.core.TransactionAbortedEvent;
+import org.apache.servicecomb.saga.core.TransactionCompensatedEvent;
+import org.apache.servicecomb.saga.core.TransactionEndedEvent;
+import org.apache.servicecomb.saga.core.TransactionStartedEvent;
+import org.apache.servicecomb.saga.format.JacksonFallback;
+import org.apache.servicecomb.saga.format.JacksonRestTransaction;
+import org.apache.servicecomb.saga.format.SagaEventFormat;
+import org.apache.servicecomb.saga.spring.SagaRecoveryTest.EventPopulatingConfig;
 import wiremock.org.apache.http.HttpStatus;
 
 @RunWith(SpringRunner.class)
@@ -153,7 +153,7 @@ public class SagaRecoveryTest {
 
       PersistentStore store = new JpaPersistentStore(repo, toJsonFormat, sagaEventFormat);
 
-      store.offer(new SagaStartedEvent("yyy", sagaY, SAGA_START_REQUEST));
+      store.offer(new SagaStartedEvent("yyy", sagaY, NoOpSagaRequest.SAGA_START_REQUEST));
       store.offer(new TransactionStartedEvent("yyy", request1));
       store.offer(new TransactionEndedEvent("yyy", request1, response1));
 
diff --git a/saga-spring/src/test/java/io/servicecomb/saga/spring/SagaServiceDiscoveryTest.java b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/SagaServiceDiscoveryTest.java
similarity index 97%
rename from saga-spring/src/test/java/io/servicecomb/saga/spring/SagaServiceDiscoveryTest.java
rename to saga-spring/src/test/java/org/apache/servicecomb/saga/spring/SagaServiceDiscoveryTest.java
index 1baa842..7ca683c 100644
--- a/saga-spring/src/test/java/io/servicecomb/saga/spring/SagaServiceDiscoveryTest.java
+++ b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/SagaServiceDiscoveryTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.http.ContentType.TEXT;
@@ -37,7 +37,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import io.servicecomb.saga.core.TransactionEndedEvent;
+import org.apache.servicecomb.saga.core.TransactionEndedEvent;
 
 @SuppressWarnings("unchecked")
 @RunWith(SpringRunner.class)
diff --git a/saga-spring/src/test/java/io/servicecomb/saga/spring/SagaSpringApplicationTestBase.java b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/SagaSpringApplicationTestBase.java
similarity index 98%
rename from saga-spring/src/test/java/io/servicecomb/saga/spring/SagaSpringApplicationTestBase.java
rename to saga-spring/src/test/java/org/apache/servicecomb/saga/spring/SagaSpringApplicationTestBase.java
index 5d67ab5..6554469 100644
--- a/saga-spring/src/test/java/io/servicecomb/saga/spring/SagaSpringApplicationTestBase.java
+++ b/saga-spring/src/test/java/org/apache/servicecomb/saga/spring/SagaSpringApplicationTestBase.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.spring;
+package org.apache.servicecomb.saga.spring;
 
 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
@@ -38,6 +38,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 
 import java.net.URLEncoder;
 
+import org.apache.servicecomb.saga.spring.SagaController.SagaExecutionDetail;
+import org.apache.servicecomb.saga.spring.SagaController.SagaExecutionQueryResult;
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
 import org.hamcrest.TypeSafeMatcher;
@@ -56,8 +58,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.tomakehurst.wiremock.client.WireMock;
 import com.github.tomakehurst.wiremock.junit.WireMockRule;
 
-import io.servicecomb.saga.spring.SagaController.SagaExecutionDetail;
-import io.servicecomb.saga.spring.SagaController.SagaExecutionQueryResult;
 import wiremock.org.apache.http.HttpStatus;
 
 @SuppressWarnings("unchecked")
diff --git a/saga-web/src/main/java/io/servicecomb/saga/web/SagaWebApplication.java b/saga-web/src/main/java/org/apache/servicecomb/saga/web/SagaWebApplication.java
similarity index 96%
rename from saga-web/src/main/java/io/servicecomb/saga/web/SagaWebApplication.java
rename to saga-web/src/main/java/org/apache/servicecomb/saga/web/SagaWebApplication.java
index 0295a70..a095d68 100644
--- a/saga-web/src/main/java/io/servicecomb/saga/web/SagaWebApplication.java
+++ b/saga-web/src/main/java/org/apache/servicecomb/saga/web/SagaWebApplication.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.web;
+package org.apache.servicecomb.saga.web;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/transports/transport-httpclient-spring/src/main/java/io/servicecomb/saga/transports/HttpClientTransportConfig.java b/transports/transport-httpclient-spring/src/main/java/org/apache/servicecomb/saga/transports/HttpClientTransportConfig.java
similarity index 91%
rename from transports/transport-httpclient-spring/src/main/java/io/servicecomb/saga/transports/HttpClientTransportConfig.java
rename to transports/transport-httpclient-spring/src/main/java/org/apache/servicecomb/saga/transports/HttpClientTransportConfig.java
index 7f269c4..a10b5c6 100644
--- a/transports/transport-httpclient-spring/src/main/java/io/servicecomb/saga/transports/HttpClientTransportConfig.java
+++ b/transports/transport-httpclient-spring/src/main/java/org/apache/servicecomb/saga/transports/HttpClientTransportConfig.java
@@ -15,15 +15,14 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.transports;
+package org.apache.servicecomb.saga.transports;
 
+import org.apache.servicecomb.saga.transports.httpclient.HttpClientTransport;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import io.servicecomb.saga.transports.httpclient.HttpClientTransport;
-
 @Configuration
 public class HttpClientTransportConfig {
 
diff --git a/transports/transport-httpclient-spring/src/main/resources/META-INF/spring.factories b/transports/transport-httpclient-spring/src/main/resources/META-INF/spring.factories
index 13820a8..6265ce1 100644
--- a/transports/transport-httpclient-spring/src/main/resources/META-INF/spring.factories
+++ b/transports/transport-httpclient-spring/src/main/resources/META-INF/spring.factories
@@ -16,4 +16,4 @@
 ## ---------------------------------------------------------------------------
 
 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-  io.servicecomb.saga.transports.HttpClientTransportConfig
+  org.apache.servicecomb.saga.transports.HttpClientTransportConfig
diff --git a/transports/transport-httpclient-spring/src/test/java/io/servicecomb/saga/transports/RestTransportTest.java b/transports/transport-httpclient-spring/src/test/java/org/apache/servicecomb/saga/transports/RestTransportTest.java
similarity index 96%
rename from transports/transport-httpclient-spring/src/test/java/io/servicecomb/saga/transports/RestTransportTest.java
rename to transports/transport-httpclient-spring/src/test/java/org/apache/servicecomb/saga/transports/RestTransportTest.java
index 9ccb614..2fa105d 100644
--- a/transports/transport-httpclient-spring/src/test/java/io/servicecomb/saga/transports/RestTransportTest.java
+++ b/transports/transport-httpclient-spring/src/test/java/org/apache/servicecomb/saga/transports/RestTransportTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.transports;
+package org.apache.servicecomb.saga.transports;
 
 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.get;
@@ -31,6 +31,7 @@ import static org.junit.Assert.fail;
 
 import java.net.SocketTimeoutException;
 
+import org.apache.servicecomb.saga.core.SagaResponse;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -47,8 +48,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 import com.github.tomakehurst.wiremock.junit.WireMockRule;
 
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.TransportFailedException;
+import org.apache.servicecomb.saga.core.TransportFailedException;
 
 @RunWith(SpringRunner.class)
 @ContextConfiguration(classes = RestTransportTest.Config.class)
diff --git a/transports/transport-httpclient/src/main/java/io/servicecomb/saga/transports/httpclient/HttpClientTransport.java b/transports/transport-httpclient/src/main/java/org/apache/servicecomb/saga/transports/httpclient/HttpClientTransport.java
similarity index 93%
rename from transports/transport-httpclient/src/main/java/io/servicecomb/saga/transports/httpclient/HttpClientTransport.java
rename to transports/transport-httpclient/src/main/java/org/apache/servicecomb/saga/transports/httpclient/HttpClientTransport.java
index dfcd1fa..0a9e160 100644
--- a/transports/transport-httpclient/src/main/java/io/servicecomb/saga/transports/httpclient/HttpClientTransport.java
+++ b/transports/transport-httpclient/src/main/java/org/apache/servicecomb/saga/transports/httpclient/HttpClientTransport.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.transports.httpclient;
+package org.apache.servicecomb.saga.transports.httpclient;
 
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -32,11 +32,11 @@ import org.apache.http.client.fluent.Request;
 import org.apache.http.client.utils.URIBuilder;
 import org.apache.http.entity.ContentType;
 import org.apache.logging.log4j.core.util.IOUtils;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SuccessfulSagaResponse;
 
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SuccessfulSagaResponse;
-import io.servicecomb.saga.core.TransportFailedException;
-import io.servicecomb.saga.transports.RestTransport;
+import org.apache.servicecomb.saga.core.TransportFailedException;
+import org.apache.servicecomb.saga.transports.RestTransport;
 import kamon.annotation.EnableKamon;
 import kamon.annotation.Segment;
 
diff --git a/transports/transport-httpclient/src/test/java/io/servicecomb/saga/transports/httpclient/HttpClientTransportTest.java b/transports/transport-httpclient/src/test/java/org/apache/servicecomb/saga/transports/httpclient/HttpClientTransportTest.java
similarity index 96%
rename from transports/transport-httpclient/src/test/java/io/servicecomb/saga/transports/httpclient/HttpClientTransportTest.java
rename to transports/transport-httpclient/src/test/java/org/apache/servicecomb/saga/transports/httpclient/HttpClientTransportTest.java
index aec6bb5..1c32d3e 100644
--- a/transports/transport-httpclient/src/test/java/io/servicecomb/saga/transports/httpclient/HttpClientTransportTest.java
+++ b/transports/transport-httpclient/src/test/java/org/apache/servicecomb/saga/transports/httpclient/HttpClientTransportTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.transports.httpclient;
+package org.apache.servicecomb.saga.transports.httpclient;
 
 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
@@ -47,9 +47,9 @@ import org.junit.Test;
 
 import com.github.tomakehurst.wiremock.junit.WireMockRule;
 
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.TransportFailedException;
-import io.servicecomb.saga.transports.RestTransport;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.TransportFailedException;
+import org.apache.servicecomb.saga.transports.RestTransport;
 
 public class HttpClientTransportTest {
 
diff --git a/transports/transport-resttemplate/src/main/java/io/servicecomb/saga/transports/resttemplate/RestTemplateTransport.java b/transports/transport-resttemplate/src/main/java/org/apache/servicecomb/saga/transports/resttemplate/RestTemplateTransport.java
similarity index 84%
rename from transports/transport-resttemplate/src/main/java/io/servicecomb/saga/transports/resttemplate/RestTemplateTransport.java
rename to transports/transport-resttemplate/src/main/java/org/apache/servicecomb/saga/transports/resttemplate/RestTemplateTransport.java
index 2fb1f7c..86f7ec7 100644
--- a/transports/transport-resttemplate/src/main/java/io/servicecomb/saga/transports/resttemplate/RestTemplateTransport.java
+++ b/transports/transport-resttemplate/src/main/java/org/apache/servicecomb/saga/transports/resttemplate/RestTemplateTransport.java
@@ -15,12 +15,8 @@
  * limitations under the License.
  */
 
-package io.servicecomb.saga.transports.resttemplate;
+package org.apache.servicecomb.saga.transports.resttemplate;
 
-import static io.servicecomb.saga.core.SagaRequest.PARAM_FORM;
-import static io.servicecomb.saga.core.SagaRequest.PARAM_JSON;
-import static io.servicecomb.saga.core.SagaRequest.PARAM_JSON_BODY;
-import static io.servicecomb.saga.core.SagaRequest.PARAM_QUERY;
 import static java.util.Collections.emptyMap;
 import static org.springframework.http.HttpMethod.DELETE;
 import static org.springframework.http.HttpMethod.GET;
@@ -34,6 +30,9 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.function.BiFunction;
 
+import org.apache.servicecomb.saga.core.SagaRequest;
+import org.apache.servicecomb.saga.core.SagaResponse;
+import org.apache.servicecomb.saga.core.SuccessfulSagaResponse;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
@@ -43,10 +42,8 @@ import org.springframework.web.client.ResponseErrorHandler;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.util.UriComponentsBuilder;
 
-import io.servicecomb.saga.core.SagaResponse;
-import io.servicecomb.saga.core.SuccessfulSagaResponse;
-import io.servicecomb.saga.core.TransportFailedException;
-import io.servicecomb.saga.transports.RestTransport;
+import org.apache.servicecomb.saga.core.TransportFailedException;
+import org.apache.servicecomb.saga.transports.RestTransport;
 
 public class RestTemplateTransport implements RestTransport {
 
@@ -90,7 +87,7 @@ public class RestTemplateTransport implements RestTransport {
 
   private String buildUrl(String address, String path, Map<String, Map<String, String>> params) {
     UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath(path);
-    params.getOrDefault(PARAM_QUERY, emptyMap())
+    params.getOrDefault(SagaRequest.PARAM_QUERY, emptyMap())
         .forEach(uriComponentsBuilder::queryParam);
 
     return protocol + address + uriComponentsBuilder.build().toString();
@@ -109,14 +106,14 @@ public class RestTemplateTransport implements RestTransport {
   private HttpEntity<Object> request(Map<String, Map<String, String>> params) {
     HttpHeaders headers = new HttpHeaders();
 
-    if (params.containsKey(PARAM_JSON)) {
+    if (params.containsKey(SagaRequest.PARAM_JSON)) {
       headers.setContentType(APPLICATION_JSON);
-      return new HttpEntity<>(params.get(PARAM_JSON).get(PARAM_JSON_BODY), headers);
+      return new HttpEntity<>(params.get(SagaRequest.PARAM_JSON).get(SagaRequest.PARAM_JSON_BODY), headers);
     }
 
-    if (params.containsKey(PARAM_FORM)) {
+    if (params.containsKey(SagaRequest.PARAM_FORM)) {
       headers.setContentType(APPLICATION_FORM_URLENCODED);
-      return new HttpEntity<>(params.get(PARAM_FORM), headers);
+      return new HttpEntity<>(params.get(SagaRequest.PARAM_FORM), headers);
     }
 
     return null;

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.

[incubator-servicecomb-saga] 02/02: SCB-154 Changed the artifact group id to org.apache.servicecomb.saga

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch SCB-154
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git

commit 1b5ce466f6ea61b77f5f7b94ab904b6d9c963e5f
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Tue Jan 2 23:24:21 2018 +0800

    SCB-154 Changed the artifact group id to org.apache.servicecomb.saga
---
 alpha/alpha-core/pom.xml                           |  2 +-
 alpha/alpha-server/pom.xml                         |  8 ++---
 alpha/pom.xml                                      |  2 +-
 docker-build-config/pom.xml                        |  2 +-
 integration-tests/coverage-aggregate/pom.xml       | 28 ++++++++--------
 integration-tests/pack-tests/pom.xml               |  8 ++---
 integration-tests/pom.xml                          |  4 +--
 omega/omega-connector/omega-connector-grpc/pom.xml |  8 ++---
 omega/omega-connector/pom.xml                      |  2 +-
 omega/omega-context/pom.xml                        |  2 +-
 omega/omega-format/pom.xml                         |  4 +--
 omega/omega-spring-starter/pom.xml                 |  8 ++---
 omega/omega-spring-tx/pom.xml                      |  6 ++--
 omega/omega-transaction/pom.xml                    |  6 ++--
 .../omega-transport-resttemplate/pom.xml           |  4 +--
 omega/omega-transport/pom.xml                      |  8 ++---
 omega/pom.xml                                      |  8 ++---
 pack-contracts/pack-contract-grpc/pom.xml          |  4 +--
 pack-contracts/pom.xml                             |  2 +-
 pom.xml                                            | 38 +++++++++++-----------
 saga-core/pom.xml                                  |  2 +-
 .../conditional-transaction-demo-tests/pom.xml     |  2 +-
 .../conditional-transaction-demo/inventory/pom.xml |  2 +-
 .../membership/pom.xml                             |  2 +-
 .../conditional-transaction-demo/payment/pom.xml   |  2 +-
 saga-demo/conditional-transaction-demo/pom.xml     |  2 +-
 .../conditional-transaction-demo/supplier/pom.xml  |  2 +-
 .../car-rental-service/pom.xml                     |  2 +-
 .../demo-tests/pom.xml                             |  2 +-
 .../flight-booking-service/pom.xml                 |  2 +-
 .../hotel-reservation-service/pom.xml              |  2 +-
 .../payment-service/pom.xml                        |  2 +-
 saga-demo/dependency-free-transaction-demo/pom.xml |  2 +-
 saga-demo/pom.xml                                  |  4 +--
 saga-discovery/pom.xml                             |  4 +--
 .../saga-discovery-servicecenter/pom.xml           |  8 ++---
 saga-format/pom.xml                                |  4 +--
 saga-spring/pom.xml                                | 10 +++---
 saga-web/pom.xml                                   |  2 +-
 transports/pom.xml                                 |  4 +--
 transports/transport-httpclient-spring/pom.xml     |  6 ++--
 transports/transport-httpclient/pom.xml            |  4 +--
 transports/transport-resttemplate/pom.xml          |  4 +--
 43 files changed, 115 insertions(+), 115 deletions(-)

diff --git a/alpha/alpha-core/pom.xml b/alpha/alpha-core/pom.xml
index 93c810f..a072051 100644
--- a/alpha/alpha-core/pom.xml
+++ b/alpha/alpha-core/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>alpha</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/alpha/alpha-server/pom.xml b/alpha/alpha-server/pom.xml
index 32647e6..cc4115d 100644
--- a/alpha/alpha-server/pom.xml
+++ b/alpha/alpha-server/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>alpha</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -50,11 +50,11 @@
       <artifactId>grpc-netty</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>pack-contract-grpc</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>alpha-core</artifactId>
     </dependency>
     <dependency>
@@ -122,4 +122,4 @@
       </build>
     </profile>
   </profiles>
-</project>
\ No newline at end of file
+</project>
diff --git a/alpha/pom.xml b/alpha/pom.xml
index 942a109..2f4cade 100644
--- a/alpha/pom.xml
+++ b/alpha/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/docker-build-config/pom.xml b/docker-build-config/pom.xml
index c4e2923..0cf0d7b 100644
--- a/docker-build-config/pom.xml
+++ b/docker-build-config/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/integration-tests/coverage-aggregate/pom.xml b/integration-tests/coverage-aggregate/pom.xml
index 72a172d..273dcec 100644
--- a/integration-tests/coverage-aggregate/pom.xml
+++ b/integration-tests/coverage-aggregate/pom.xml
@@ -18,7 +18,7 @@
 
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
-    <groupId>io.servicecomb.saga.tests</groupId>
+    <groupId>org.apache.servicecomb.saga.tests</groupId>
     <artifactId>integration-tests</artifactId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
@@ -28,55 +28,55 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-core</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-format</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-spring</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga.transports</groupId>
+      <groupId>org.apache.servicecomb.saga.transports</groupId>
       <artifactId>transport-httpclient</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga.discovery</groupId>
+      <groupId>org.apache.servicecomb.saga.discovery</groupId>
       <artifactId>saga-discovery-servicecenter</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-context</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-transaction</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-spring-tx</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-transport-resttemplate</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-format</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-connector-grpc</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>alpha-server</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga.tests</groupId>
+      <groupId>org.apache.servicecomb.saga.tests</groupId>
       <artifactId>pack-tests</artifactId>
       <version>0.0.3-SNAPSHOT</version>
     </dependency>
diff --git a/integration-tests/pack-tests/pom.xml b/integration-tests/pack-tests/pom.xml
index c567682..944f45d 100644
--- a/integration-tests/pack-tests/pom.xml
+++ b/integration-tests/pack-tests/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>integration-tests</artifactId>
-    <groupId>io.servicecomb.saga.tests</groupId>
+    <groupId>org.apache.servicecomb.saga.tests</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -42,11 +42,11 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-spring-starter</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-transport-resttemplate</artifactId>
     </dependency>
     <dependency>
@@ -255,4 +255,4 @@
     </profile>
   </profiles>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index cf1cc99..7db46af 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -19,12 +19,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>io.servicecomb.saga.tests</groupId>
+  <groupId>org.apache.servicecomb.saga.tests</groupId>
   <artifactId>integration-tests</artifactId>
   <packaging>pom</packaging>
   <modules>
diff --git a/omega/omega-connector/omega-connector-grpc/pom.xml b/omega/omega-connector/omega-connector-grpc/pom.xml
index a6cf1a2..18241a9 100644
--- a/omega/omega-connector/omega-connector-grpc/pom.xml
+++ b/omega/omega-connector/omega-connector-grpc/pom.xml
@@ -24,7 +24,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>omega-connector</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -41,11 +41,11 @@
       <artifactId>grpc-netty</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-transaction</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>pack-contract-grpc</artifactId>
     </dependency>
     <dependency>
@@ -70,4 +70,4 @@
       <artifactId>unit-scaffolding</artifactId>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/omega/omega-connector/pom.xml b/omega/omega-connector/pom.xml
index 9d0c4e7..f1dbb1b 100644
--- a/omega/omega-connector/pom.xml
+++ b/omega/omega-connector/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>omega</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/omega/omega-context/pom.xml b/omega/omega-context/pom.xml
index f6cd0c6..cd8b800 100644
--- a/omega/omega-context/pom.xml
+++ b/omega/omega-context/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>omega</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/omega/omega-format/pom.xml b/omega/omega-format/pom.xml
index e7d2dc9..a842cbb 100644
--- a/omega/omega-format/pom.xml
+++ b/omega/omega-format/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>omega</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -30,7 +30,7 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-transaction</artifactId>
     </dependency>
 
diff --git a/omega/omega-spring-starter/pom.xml b/omega/omega-spring-starter/pom.xml
index b0f2854..02a036b 100644
--- a/omega/omega-spring-starter/pom.xml
+++ b/omega/omega-spring-starter/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>omega</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -30,11 +30,11 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-spring-tx</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-format</artifactId>
     </dependency>
     <dependency>
@@ -46,7 +46,7 @@
       <artifactId>grpc-stub</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-connector-grpc</artifactId>
     </dependency>
   </dependencies>
diff --git a/omega/omega-spring-tx/pom.xml b/omega/omega-spring-tx/pom.xml
index 6019650..e5fc8b3 100644
--- a/omega/omega-spring-tx/pom.xml
+++ b/omega/omega-spring-tx/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>omega</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -33,11 +33,11 @@
       <artifactId>spring-boot-starter</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-context</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-transaction</artifactId>
     </dependency>
 
diff --git a/omega/omega-transaction/pom.xml b/omega/omega-transaction/pom.xml
index e14c10c..c39f22e 100644
--- a/omega/omega-transaction/pom.xml
+++ b/omega/omega-transaction/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>omega</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -30,7 +30,7 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-context</artifactId>
     </dependency>
     <dependency>
@@ -61,4 +61,4 @@
 
   </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/omega/omega-transport/omega-transport-resttemplate/pom.xml b/omega/omega-transport/omega-transport-resttemplate/pom.xml
index 5464337..193799c 100644
--- a/omega/omega-transport/omega-transport-resttemplate/pom.xml
+++ b/omega/omega-transport/omega-transport-resttemplate/pom.xml
@@ -22,7 +22,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>omega-transport</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -53,4 +53,4 @@
     </dependency>
   </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/omega/omega-transport/pom.xml b/omega/omega-transport/pom.xml
index 79359e1..622334b 100644
--- a/omega/omega-transport/pom.xml
+++ b/omega/omega-transport/pom.xml
@@ -22,7 +22,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>omega</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -35,11 +35,11 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-context</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>omega-transaction</artifactId>
     </dependency>
 
@@ -64,4 +64,4 @@
       <artifactId>unit-scaffolding</artifactId>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/omega/pom.xml b/omega/pom.xml
index a0def30..d8ec1b3 100644
--- a/omega/pom.xml
+++ b/omega/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -48,16 +48,16 @@
         <scope>import</scope>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>omega-context</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>omega-transaction</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
     </dependencies>
   </dependencyManagement>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/pack-contracts/pack-contract-grpc/pom.xml b/pack-contracts/pack-contract-grpc/pom.xml
index 388c5aa..6e3f036 100644
--- a/pack-contracts/pack-contract-grpc/pom.xml
+++ b/pack-contracts/pack-contract-grpc/pom.xml
@@ -24,7 +24,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>pack-contracts</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -57,4 +57,4 @@
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/pack-contracts/pom.xml b/pack-contracts/pom.xml
index dc2acd8..b3147a5 100644
--- a/pack-contracts/pom.xml
+++ b/pack-contracts/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/pom.xml b/pom.xml
index 45cb12c..f402d89 100755
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>io.servicecomb.saga</groupId>
+  <groupId>org.apache.servicecomb.saga</groupId>
   <artifactId>saga</artifactId>
   <packaging>pom</packaging>
   <version>0.0.3-SNAPSHOT</version>
@@ -98,87 +98,87 @@
   <dependencyManagement>
     <dependencies>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>saga-core</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>saga-format</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>saga-spring</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga.transports</groupId>
+        <groupId>org.apache.servicecomb.saga.transports</groupId>
         <artifactId>transport-httpclient</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga.transports</groupId>
+        <groupId>org.apache.servicecomb.saga.transports</groupId>
         <artifactId>transport-httpclient-spring</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga.transports</groupId>
+        <groupId>org.apache.servicecomb.saga.transports</groupId>
         <artifactId>transport-resttemplate</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga.discovery</groupId>
+        <groupId>org.apache.servicecomb.saga.discovery</groupId>
         <artifactId>saga-discovery-servicecenter</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>omega-context</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>omega-transaction</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>omega-spring-tx</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>omega-transport-resttemplate</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>omega-connector-grpc</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>omega-spring-starter</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>omega-format</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>alpha-core</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>alpha-server</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
       <dependency>
-        <groupId>io.servicecomb.saga</groupId>
+        <groupId>org.apache.servicecomb.saga</groupId>
         <artifactId>pack-contract-grpc</artifactId>
         <version>0.0.3-SNAPSHOT</version>
       </dependency>
@@ -439,7 +439,7 @@
           <configuration>
             <mixins>
               <mixin>
-                <groupId>io.servicecomb.saga</groupId>
+                <groupId>org.apache.servicecomb.saga</groupId>
                 <artifactId>docker-build-config</artifactId>
                 <version>${project.version}</version>
               </mixin>
diff --git a/saga-core/pom.xml b/saga-core/pom.xml
index a5ecfe5..95d272b 100644
--- a/saga-core/pom.xml
+++ b/saga-core/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/pom.xml b/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/pom.xml
index a037c14..d924c54 100644
--- a/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/pom.xml
+++ b/saga-demo/conditional-transaction-demo/conditional-transaction-demo-tests/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>conditional-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/conditional-transaction-demo/inventory/pom.xml b/saga-demo/conditional-transaction-demo/inventory/pom.xml
index 9203138..6b135f2 100644
--- a/saga-demo/conditional-transaction-demo/inventory/pom.xml
+++ b/saga-demo/conditional-transaction-demo/inventory/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>conditional-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/conditional-transaction-demo/membership/pom.xml b/saga-demo/conditional-transaction-demo/membership/pom.xml
index 7c41cb2..2237a08 100644
--- a/saga-demo/conditional-transaction-demo/membership/pom.xml
+++ b/saga-demo/conditional-transaction-demo/membership/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>conditional-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/conditional-transaction-demo/payment/pom.xml b/saga-demo/conditional-transaction-demo/payment/pom.xml
index 95a1e12..07ee8c7 100644
--- a/saga-demo/conditional-transaction-demo/payment/pom.xml
+++ b/saga-demo/conditional-transaction-demo/payment/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>conditional-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/conditional-transaction-demo/pom.xml b/saga-demo/conditional-transaction-demo/pom.xml
index 3fd3d6b..f962715 100644
--- a/saga-demo/conditional-transaction-demo/pom.xml
+++ b/saga-demo/conditional-transaction-demo/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/conditional-transaction-demo/supplier/pom.xml b/saga-demo/conditional-transaction-demo/supplier/pom.xml
index 8d4b435..a9c0ee5 100644
--- a/saga-demo/conditional-transaction-demo/supplier/pom.xml
+++ b/saga-demo/conditional-transaction-demo/supplier/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>conditional-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/dependency-free-transaction-demo/car-rental-service/pom.xml b/saga-demo/dependency-free-transaction-demo/car-rental-service/pom.xml
index fc37dcd..c108aef 100644
--- a/saga-demo/dependency-free-transaction-demo/car-rental-service/pom.xml
+++ b/saga-demo/dependency-free-transaction-demo/car-rental-service/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>dependency-free-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/dependency-free-transaction-demo/demo-tests/pom.xml b/saga-demo/dependency-free-transaction-demo/demo-tests/pom.xml
index 80568fd..8a5616b 100644
--- a/saga-demo/dependency-free-transaction-demo/demo-tests/pom.xml
+++ b/saga-demo/dependency-free-transaction-demo/demo-tests/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>dependency-free-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/dependency-free-transaction-demo/flight-booking-service/pom.xml b/saga-demo/dependency-free-transaction-demo/flight-booking-service/pom.xml
index f82a6b6..2228e85 100644
--- a/saga-demo/dependency-free-transaction-demo/flight-booking-service/pom.xml
+++ b/saga-demo/dependency-free-transaction-demo/flight-booking-service/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>dependency-free-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/pom.xml b/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/pom.xml
index d232213..6548c85 100644
--- a/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/pom.xml
+++ b/saga-demo/dependency-free-transaction-demo/hotel-reservation-service/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>dependency-free-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/dependency-free-transaction-demo/payment-service/pom.xml b/saga-demo/dependency-free-transaction-demo/payment-service/pom.xml
index 4143d3c..d91f5d2 100644
--- a/saga-demo/dependency-free-transaction-demo/payment-service/pom.xml
+++ b/saga-demo/dependency-free-transaction-demo/payment-service/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>dependency-free-transaction-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/dependency-free-transaction-demo/pom.xml b/saga-demo/dependency-free-transaction-demo/pom.xml
index cbc3ef6..dbc5460 100644
--- a/saga-demo/dependency-free-transaction-demo/pom.xml
+++ b/saga-demo/dependency-free-transaction-demo/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga-demo</artifactId>
-    <groupId>io.servicecomb.saga.demo</groupId>
+    <groupId>org.apache.servicecomb.saga.demo</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/saga-demo/pom.xml b/saga-demo/pom.xml
index 467daa4..c8a0b68 100644
--- a/saga-demo/pom.xml
+++ b/saga-demo/pom.xml
@@ -19,12 +19,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>io.servicecomb.saga.demo</groupId>
+  <groupId>org.apache.servicecomb.saga.demo</groupId>
   <artifactId>saga-demo</artifactId>
   <packaging>pom</packaging>
   <modules>
diff --git a/saga-discovery/pom.xml b/saga-discovery/pom.xml
index 7a7abfa..0b88987 100644
--- a/saga-discovery/pom.xml
+++ b/saga-discovery/pom.xml
@@ -19,12 +19,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>io.servicecomb.saga.discovery</groupId>
+  <groupId>org.apache.servicecomb.saga.discovery</groupId>
   <artifactId>saga-discovery</artifactId>
   <packaging>pom</packaging>
   <modules>
diff --git a/saga-discovery/saga-discovery-servicecenter/pom.xml b/saga-discovery/saga-discovery-servicecenter/pom.xml
index 17f544f..5998694 100644
--- a/saga-discovery/saga-discovery-servicecenter/pom.xml
+++ b/saga-discovery/saga-discovery-servicecenter/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga-discovery</artifactId>
-    <groupId>io.servicecomb.saga.discovery</groupId>
+    <groupId>org.apache.servicecomb.saga.discovery</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -40,15 +40,15 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-core</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga.transports</groupId>
+      <groupId>org.apache.servicecomb.saga.transports</groupId>
       <artifactId>transport-httpclient-spring</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga.transports</groupId>
+      <groupId>org.apache.servicecomb.saga.transports</groupId>
       <artifactId>transport-resttemplate</artifactId>
     </dependency>
     <dependency>
diff --git a/saga-format/pom.xml b/saga-format/pom.xml
index e94a289..5ff656d 100644
--- a/saga-format/pom.xml
+++ b/saga-format/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -28,7 +28,7 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-core</artifactId>
     </dependency>
     <dependency>
diff --git a/saga-spring/pom.xml b/saga-spring/pom.xml
index 0c57124..2d96dab 100755
--- a/saga-spring/pom.xml
+++ b/saga-spring/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -58,11 +58,11 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-core</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-format</artifactId>
       <exclusions>
         <exclusion>
@@ -72,11 +72,11 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga.transports</groupId>
+      <groupId>org.apache.servicecomb.saga.transports</groupId>
       <artifactId>transport-httpclient-spring</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga.discovery</groupId>
+      <groupId>org.apache.servicecomb.saga.discovery</groupId>
       <artifactId>saga-discovery-servicecenter</artifactId>
     </dependency>
     <dependency>
diff --git a/saga-web/pom.xml b/saga-web/pom.xml
index e8236b6..6dec217 100644
--- a/saga-web/pom.xml
+++ b/saga-web/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/transports/pom.xml b/transports/pom.xml
index f95eedc..2c2c8bf 100644
--- a/transports/pom.xml
+++ b/transports/pom.xml
@@ -19,12 +19,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>saga</artifactId>
-    <groupId>io.servicecomb.saga</groupId>
+    <groupId>org.apache.servicecomb.saga</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>io.servicecomb.saga.transports</groupId>
+  <groupId>org.apache.servicecomb.saga.transports</groupId>
   <artifactId>transports</artifactId>
   <packaging>pom</packaging>
   <modules>
diff --git a/transports/transport-httpclient-spring/pom.xml b/transports/transport-httpclient-spring/pom.xml
index 78c67ab..c5f365d 100644
--- a/transports/transport-httpclient-spring/pom.xml
+++ b/transports/transport-httpclient-spring/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>transports</artifactId>
-    <groupId>io.servicecomb.saga.transports</groupId>
+    <groupId>org.apache.servicecomb.saga.transports</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -40,11 +40,11 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-core</artifactId>
     </dependency>
     <dependency>
-      <groupId>io.servicecomb.saga.transports</groupId>
+      <groupId>org.apache.servicecomb.saga.transports</groupId>
       <artifactId>transport-httpclient</artifactId>
     </dependency>
     <dependency>
diff --git a/transports/transport-httpclient/pom.xml b/transports/transport-httpclient/pom.xml
index a3f82c3..3eb747a 100644
--- a/transports/transport-httpclient/pom.xml
+++ b/transports/transport-httpclient/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>transports</artifactId>
-    <groupId>io.servicecomb.saga.transports</groupId>
+    <groupId>org.apache.servicecomb.saga.transports</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -28,7 +28,7 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-core</artifactId>
     </dependency>
     <dependency>
diff --git a/transports/transport-resttemplate/pom.xml b/transports/transport-resttemplate/pom.xml
index 8cb4a00..c8e8d10 100644
--- a/transports/transport-resttemplate/pom.xml
+++ b/transports/transport-resttemplate/pom.xml
@@ -21,7 +21,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>transports</artifactId>
-    <groupId>io.servicecomb.saga.transports</groupId>
+    <groupId>org.apache.servicecomb.saga.transports</groupId>
     <version>0.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -42,7 +42,7 @@
 
   <dependencies>
     <dependency>
-      <groupId>io.servicecomb.saga</groupId>
+      <groupId>org.apache.servicecomb.saga</groupId>
       <artifactId>saga-core</artifactId>
     </dependency>
     <dependency>

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.