Register
Submit a solution
The challenge is finished.

Challenge Overview

The features of the app:
1) Admin access only. Requires default Google Apps login.

2) Upon REST-based POST method, the app will store the health-check of a GAMME server

3) An admin user sees all GAMME servers that will be used for migration, with color-coded status. Red means offline, Green means online, and Orange means in progress

4) User uploads a csv file of all users that will be migrated through the use of GAMME. In addition, the app should split the csv list uploaded, equally to the number of GAMME servers, with the criteria of no more than 1,000 users/list. For example, if the uploaded list consists of 15,000 users, and available GAMME servers are 10, the app should split the users into 15 different lists, as opposed to 10, since, each list cannot consist of more than 1,000 users each.

5) Upon REST-based GET method, the app provides the next available user list that has not been requested before. There should be some kind of flag that indicates when a user list has been pulled down for migration.��

6) Web interface has a form that requests the following input, all optional inputs:
- Maximum number of streams/threads
-��Migration Start Date
-��Migration End Date
-��Exchange Profile Name
-��Exchange Admin Login
-��Custom Label Prefix
-��Google Domain
-��Google Consumer Key
-��Google Consumer Secret
-��Retry Count
-��Calendar Migration (yes/no)
-��Contact Migration (yes/no)
-��Mail Migration (yes/no)
-��Exclude Top-level Folders (comma-delimited)

7) Upon a REST-based GET method, the app will provide the appropriate flags that will be required by GAMME to start a GAMME migration based on GAMME options that were previously set in the web interface

**Web Services Development**
1)��Server status
REST-based API, invoked through POST method as such:
http://[app-id].appspot.com/server_status?exname=[Exchange hostname/IP]&status=[red/green/orange]
exname, expects a string value, which consists of the GAMME server name or IP Address
status, expects a string value of either red, green or orange

2) CSV distributor
REST-based API, invoked through GET method as such:
http://[app-id].appspot.com/user_list
This will provide the next available CSV file that will be used for GAMME migration. Should be in the form of: user-list_[nnn].csv
[nnn] is the number of the user list, starts from 000 to 999.

3) Process Complete
REST-based API, invoked through POST method as such:
http://[app-id].appspot.com/user_list?complete=[user_list_id]
user_list_id, expects the value in the form of user-list_[nnn].csv
This will indicate that the user-list_[nnn].csv has been completed through the GAMME migration process.

4) GAMME parameters
REST-based API, invoked through GET method as such:
http://[app-id].appspot.com/gamme_params?id=[gamme_config_id]
gamme_config_id, expects the ID number of the saved GAMME config file. This is optional, if not specified, it will grab the default GAMME config file.
The return value of this call will be all the parameters of running a GAMME migration through command line. The parameters are based on the form input by the admin.

**Admin-accessible only web interface**
- Expects an admin user to upload a csv file, consisting of users to be migrated from Exchange to Google Apps
-��A web interface that provides a list of all GAMME servers, with their status (red/green/orange). If a given GAMME server has not responded within five (5) minutes since the last health-check, it should be indicated as red (offline). The web interface should be automatically refreshed every five (5) minutes as well.
-��A web form that will require the logged-in admin user to enter necessary parameters for running a GAMME migration. With the ability to save the config files, also set a given GAMME config file as default. The first one created will be default.
Assumptions and requirements:
-��CSV file will have headers:��source_email,target_email
-��source_email indicates the user���s primary email address as identified in Exchange, and target_email specifies the Google email address the user will be provisioned under.
-��Expect a csv file that contains at most 100,000 rows.
-��Either log failures in native AppEngine logging capability or use the Datastore. Specify upon submission.

Overview Diagram

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30036644