SEMDA API and integration

Saturday, September 21, 2024

Important note:

The following article shows, which business cases are covered by the SEMDA API and how it can be used. The process flows shown here are examples! The Local CMS is free to implement other business cases and use the API in different way.


SEMDA integrates three business objects

  1. Organizations
    The current SEMDA API covers organizations of the type club.
    The organization must belong to one of the two communities Rotary or Rotaract, which are treated equally.

  2. Individuals / members
    The current SEMDA API covers individuals of the type member and honorary member. The individual must belong to one of the three communities mentioned above.

  3. Officers
    The term “officer” represents an individual having a function within an organization. Example is a president or secretary of a rotary club.
    SEMDA and RI-API support only these officers:
    • Rotary: Club President, Club Secretary, Club Treasurer, Club Membership Chair, Club Foundation Chair, and Club Executive Secretary/Director
    • Rotaract: Rotaract President​ and Rotaract Adviser

Restrictions:

Due to restrictions in the RI API and in the IT systems or RI, the current  SEMDA API has following limitations:

  • Interact community is not supported
  • Organizations other then clubs e.g. districts, fellowships, foundations, services and other are not supported.
  • Only regular members and honorary members of clubs are supported. Local CMS may implement other types of individuals like guests, partners, candidates, sponsors, visitors, other contacts etc. Such individuals cannot be managed in RI.

These restrictions can be lifted in future versions of the SEMDA API, when RI will provide corresponding features.

API reference

You can find the complete API description in SwaggerHub.

SEMDA Logo

1. Organizations / Clubs

1.1. Search for clubs

The control over the clubs is at Rotary International. The Local CMS can retrieve list of clubs and some limited information about them. However in order to get all details from RI about the club, it is necessary to set the “vendor = SEMDA-3” for that club in RI. The vendor can only be set by the club itself. Here is a guide (in German) how to do it. Without setting the vendor to SEMDA-3 for the cub, only a very limited amount of information will be returned by RI .

cXg5KUdtdTQAAAABJRU5ErkJggg==

The related API endpoints are:

1.2. Create club

Club must be created in RI first. After that, the “vendor = SEMDA xxx” must be set for this club in RIThis can be done only by the club itself.  Here is the list of SEMDA vendors and here the guide (in German) how to do it.

Important note: remember that RI rules require some minimal number of club members to be entered when a new club is created.

The creation of the club in the Local CMS is also a manual step, because the Local CMS maintains far more data about the club then RI. Creating clubs in Local CMS before RI may lead to different club data in Local CMS. To avoid this, the Local CMS can check data existing in RI. Assuming the vendor for the new club was properly set in RI, the club details can be obtained and used during the creation of the new club in Local CMS.

egLdrAAAAAElFTkSuQmCC

The related API endpoints are:

1.3. Modify club

Usually the Local CMS maintains more data about the club than RI. This is given by different requirements for the systems. Therefore clubs should be modified only in Local CMS. Data modifications in RI may lead to data inconsistency in Local CMS.

Some data cannot be modified in RI. It must be set or changed manually within MyRotary or cannot be changed at all. These are for example:

  • RI-ID of the organization
  • Name of the club 

SQUypEIAABOoSIBfXRZT9DQiP9JhLwMvFV9unx5iSIQABCNQjQC6uRyjj3yM8MgbO4yAAAQhAAAKtTADh0crep+0QgAAEIACBjAkgPDIGzuMgAAEIQAACrUwA4dHK3qftEIAABCAAgYwJIDwyBs7jIAABCEAAAq1MAOHRyt6n7RCAAAQgAIGMCSA8MgbO4yAAAQhAAAKtTKAiPFoZAm2HAAQgAAEIQCAzAv8f0gUfG4ZYO4wAAAAASUVORK5CYII=

The related API endpoints are:

1.4. Terminate club

Termination of clubs requires many pre-conditions like no members, paid invoices, etc. to be met. Therefore, it is not possible to terminate clubs in RI via the RI-Interface. Termination must be done in both RI and Local CMS. 

Manual process spanning multiple actors is difficult to synchronize and introduces dependency of the actors. For reasons of correct accounting and membership management, the club should be terminated fist in RI, then in the Local CMS. Delaying the termination in one of the systems will lead to data inconsistencies in both Local CMS and in RI.

The search for clubs can be used in Local CMS to detect terminated organizations in RI. They are not in the query result. The current RI-API does not provide information about the club status. The only way to clarify it is to engage the district governor.

qyfuES9DF5AAAAAElFTkSuQmCC

The related API endpoints are:

2. Individuals / Members

2.1. Import members

When new club is created in RI, it must have a minimal initial number of members. These founding members are always created in RI. In order to create them also in the Local CMS, their data can be imported from RI.

5WLL2AAAAABJRU5ErkJggg==

The related API endpoints are:

The current SEMDA API covers individuals of the type member and honorary member. The individual must belong to one of the three communities: Rotary,Rotaract or Interact (not yet supported). The membership in these communities has specific differences.

2.2. Create member

In RI an individual always belongs to at least one organization. This means. that it is not possible to create an individual without an affiliation to a club. The  endpoint POST /3.0/affiliation/{ClubID}/new-individual must be used for creation of new members.

Handling of duplicates is cumbersome in RI and in Local CMS and creates high manual effort for the support and troubleshooting. Duplicates should be avoided. A good way to avoid duplicates is to search for existing members which similar data before the member is created.

This is what the endpoint POST /3.0/search/individuals is used for. One can search only on e-mail, first name, last name, Club-ID, club type, club name, district-Id or country, and get back only first name, middle name, last name, country and the existing affiliation to the clubs. Unfortunately e-mail is not returned, but it is possible to search on it. In this way a potential duplicate can be detected.

sQJ4agItwWVaAgGCLAjXkrJTpcIAAC+SLQeOeoRAVGLk6EL9uHIU7S4W8aFBAm6fCHVRAAARCIMoKCXOxYe4E4Sc8h9QQKgiE99rAMAiAAApIAcnEO2wLESbpOCwsKCJN0ucM6CIAACKgEkItz1h4gTtJ3mB4UECbpM8cbQAAEQEAngFycozYBcWLHWTIoWh55BL7Ezw5yvAUEQAAEDiOAXJyTRgFxYs9RFBR03TfxInsvxZtAAARAAASqCCAX56BBQJzkwEkoIgiAAAiAAAiUiQDESZm8jbqCAAiAAAiAQA4IQJzkwEkoIgiAAAiAAAiUiQDESZm8jbqCAAiAAAiAQA4IQJzkwEkoIgiAAAiAAAiUiQDESZm8jbqCAAiAAAiAQA4IVMRJDsqKIoIACIAACIAACJSDwP8HzkMshyNalPwAAAAASUVORK5CYII=

The related API endpoints are:

2.3. Modify member

Members should be modified only in Local CMS (MASTER), then the modification is propagated to RI. Some member data cannot be modified in Local CMS. It must be set or changed manually in MyRotary, by contacting Rotary International or cannot be changed at all. These cases are:

  • Login e-mail address used to login into MyRotary
  • Club entry date
  • RI-ID of the individual

wIFVmpP1XcmMQAAAABJRU5ErkJggg==

The related API endpoints are:

RI allows modification of individuals in parallel to Local CMS. It is unavoidable, that members will change their data in one or other system without knowing the consequences. In order to support bidirectional data synchronization, SEMDA provides service to retrieve updates of all members since a specific date. The Local CMS is responsible for requesting the updates in periodic intervals and processing them correctly. It must avoid endless loops resulting from changes initiated in Local CMS. They will of course appear in the next update request.

ABAeu7Gs7JAHAAAAAElFTkSuQmCC

The related API endpoints are:

2.4. Change member affiliation to a club

A member may have affiliation with multiple clubs. He/she can be member of one Rotary club and/or of one Rotaract club. He/she can be also honorary member of any number of other clubs. The first affiliation of the member is created when he joins the Rotary or Rotaract community. From then on he/she is forever part of the community.

With the exception of the founding members of a new club, the Local CMS is assumed to be the MASTER for maintenance of the affiliation. The new affiliation is then propagated to RI.

EdJQ1yCI34rGEJAiAAAmEEkItLEBsQG8mcZBvkEBrJOMMaBEAABOoRQC4ueHxAbCR3UFSQQ2gkZ4wSQAAEQCCKAHJxFKEcfw+x4QZ+WJBDaLjhi1JAAARAwIYAcrENpRzugdhwB90McggNd2xREgiAAAjYEkAutiWV4X0QG25hc5Bvt+02eKmaW7QoDQRAAASsCSAXW6PK5kaIDfecKcjpwmvi3bNFiSAAAiBgSwC52JZUBvdBbGQAGY8AARAAARAAgUYmALHRyN5H20EABEAABEAgAwIQGxlAxiNAAARAAARAoJEJ1MRGI0NA20EABEAABEAABFIl8L8f9kCr8txheAAAAABJRU5ErkJggg==

The related API endpoints are:

For honorary members the Local CMS must solve the problem how to obtain their data if they are not known in the Local CMS. The endpoint POST /3.0/search/individuals can be used for that, even it returns only limited amount of data. 

2.5. Terminate member

Termination means ending membership in an club. The individual may still have membership(s) in another clubs. Termination is always done by the respective club. The risk of inconsistency with RI due to incompatible change in RI is low. Local CMS is assumed to be the MASTER and the change is propagated to RI. It is possible to retrieve the terminated individuals of the clubs from RI first and decide if manual actions are necessary.

nCUAIIgAAIgIAnAeRiSwMDQsRSx6BaIAACIAACIFAEAhAiRfAy2ggCIAACIAAClhKAELHUMagWCIAACIAACBSBAIRIEbyMNoIACIAACICApQQgRCx1DKoFAiAAAiAAAkUgACFSBC+jjSAAAiAAAiBgKYGSELG0fqgWCIAACIAACIBAvgn8f+GNDSDky9zjAAAAAElFTkSuQmCC

The related API endpoints are:

The terminated member will remain in the RI system. It is not possible to delete this personal data completely today.

2.6. Transfer member

An Individual cannot be member in two clubs of the same community type on any given date. Thus the transfer must be implemented with two separate requests, and the dates must be apart.

  1. The Individual is terminated in the existing Club.
  2. The Individuals to the new club is created.

3. Officers

The term “officer” represents an individual having a function within an organization. Example is a president or secretary of the club. Management of officers is always done by the respective club.

Modification of officers is not possible. Remove and add is used instead

3.1. Add officer

Officers should be added in Local CMS (MASTER) then the change is propagated to RI. Before an officer is added, Local CMS should verify that it doesn't exist at RI or in Local CMS already.

LSzwThCzA3CxqVAAARAAARAIA0CEPM0qKJNEAABEAABEDBIAGJuEDYuBQIgAAIgAAJpEICYp0EVbYIACIAACICAQQIQc4OwcSkQAAEQAAEQSIMAxDwNqmgTBEAABEAABAwSgJgbhI1LgQAIgAAIgEAaBHJinkbjaBMEQAAEQAAEQMAIgf8Dugou2juCTCMAAAAASUVORK5CYII=

The related API endpoints are:

3.2. Remove officer

Officers should be removed in Local CMS (MASTER) then the change is propagated to RI. Before an officer is added, Local CMS should verify if the officer still exist in RI.

A3SjwtjgzzMoAAAAAElFTkSuQmCC

The related API endpoints are: