Hello Courage,
When I used the Password12$ as the password the request is
POST /identity/v1/token?grant_type=password& username=kehinde&
password=Password12$ HTTP/1.1
Host: localhost:8081
Content-Type: application/json
X-Tenant-Identifier: UMFB
cache-control: no-cache
and the response
{
"timestamp": 1555092430869,
"status": 400,
"error": "Bad Request",
"exception": "org.apache.fineract.cn.lang.ServiceException",
"message": "Password was not base64 encoded.",
"path": "/identity/v1/token"
}
Which is clear that the password needs to be encoded in Base64, reason why
I had to encode it in base64 in the previouse request
Regards
On Fri, 12 Apr 2019 at 19:03, Courage Angeh <[email protected]> wrote:
> Hi Babajide,
>
> *...*
> *STEP 5*
>
> *REQUEST *
>
> *POST /identity/v1/token?grant_type=password& username=kehinde&
> password=UGFzc3dvcmQxMiQ= HTTP/1.1*
> *Host: localhost:8081*
> *Content-Type: application/json*
> *X-Tenant-Identifier: UMFB*
> *cache-control: no-cache*
> *...*
>
> This STEP 5 should use the password (Password12$) used to create the user
> (kehinde) in STEP 4
>
> Please try that, if it still doesn't work, let me know. We could have a
> call but today is the best time I am available for a call.
>
> Regards,
> Courage.
>
> On Fri, Apr 12, 2019 at 6:35 PM Ed Cable <[email protected]> wrote:
>
> > Hi Babajide,
> >
> > Welcome to the Mifos and Fineract communities. I added the dev@ fineract
> > mailing list. Hopefully you are now subscribed to that as well.
> >
> > I see you're from the Interswitch Group in Nigeria - were you in
> attendance
> > at the Africa Fintech Summit. Let me know if you have any questions about
> > the community the various Gen 2 and Gen 3 stacks.
> >
> > I'll let Courage and others continue to assist you.
> >
> > Ed
> >
> > On Fri, Apr 12, 2019 at 1:29 PM Babajide Apata <[email protected]>
> > wrote:
> >
> > > *Step 1 *
> > >
> > > *REQUEST: *
> > > POST /provisioner/v1/tenants HTTP/1.1
> > > Host: localhost:9090
> > > Content-Type: application/json
> > > User: wepemnefret
> > > Authorization: Bearer
> > >
> >
> eyJhbGciOiJSUzUxMiJ9.eyJhdWQiOiJwcm92aXNpb25lci12MSIsInN1YiI6IndlcGVtbmVmcmV0IiwiL2ZpbmNuLmFwYWNoZS5vcmcvcyI6IjE1NTM3MDU5MjUiLCIvZmluY24uYXBhY2hlLm9yZy9jIjoiUk9MRV9BRE1JTiIsImlzcyI6InN5c3RlbSIsImlhdCI6MTU1NTA3MTcwMywiZXhwIjoxNTU1Mjg3NzAzfQ.YkK87RX9aUwzXs0IuscPw_4mTUcPZPTKqzHvtL69kJM3A8USNy2IzCbpmCyCkVu3ru7ZK-WgXQGA6-h6n_KSEmsftXS2FdzPVMiG1DQDVyrG5OO_vpQyxCbVa1aublcZIXgz7GxEmmJhCcAoMA6YpR1HJKFGSShCLbPhbGd-Ssq6000TuNuud0iVwq376zQ4zHy4-MwMk5j5_AyLgi-fcD3oXQA8l6IVkVG16JjhFoWI6vTkP5D1C_EQnBaZqgsiOZW6Nv3EXobFNhx5y-Fd_s6Bvp7LfM6vxlVbNZ153gN-AR_i88T6X__tksgHeHymAJ1Sgg4G0M_MqLkMWNDwDQ
> > > cache-control: no-cache
> > > {
> > > "identifier" : "UMFB",
> > > "name" : "UNAAB MicroFinance Bank",
> > > "description" : "UNAAB MicroFinance Bank",
> > > "cassandraConnectionInfo" : {
> > > "clusterName" : "staging_cluster",
> > > "contactPoints" : "127.0.0.1:9042",
> > > "keyspace" : "UMFB",
> > > "replicationType" : "Simple",
> > > "replicas" : "1"
> > > },
> > > "databaseConnectionInfo" : {
> > > "driverClass" : "org.mariadb.jdbc.Driver",
> > > "databaseName" : "UMFB",
> > > "host" : "localhost",
> > > "port" : "3306",
> > > "user" : "root",
> > > "password" : "mysql"
> > > }
> > > }------WebKitFormBoundary7MA4YWxkTrZu0gW--
> > >
> > > *RESPONSE : 202 Accepted*
> > >
> > >
> > > *STEP 2*
> > > *REQUEST:*
> > >
> > > POST /provisioner/v1/tenants/UMFB/identityservice HTTP/1.1
> > > Host: localhost:9090
> > > Content-Type: application/json
> > > User: wepemnefret
> > > Authorization: Bearer
> > >
> >
> eyJhbGciOiJSUzUxMiJ9.eyJhdWQiOiJwcm92aXNpb25lci12MSIsInN1YiI6IndlcGVtbmVmcmV0IiwiL2ZpbmNuLmFwYWNoZS5vcmcvcyI6IjE1NTM3MDU5MjUiLCIvZmluY24uYXBhY2hlLm9yZy9jIjoiUk9MRV9BRE1JTiIsImlzcyI6InN5c3RlbSIsImlhdCI6MTU1NTA3MTcwMywiZXhwIjoxNTU1Mjg3NzAzfQ.YkK87RX9aUwzXs0IuscPw_4mTUcPZPTKqzHvtL69kJM3A8USNy2IzCbpmCyCkVu3ru7ZK-WgXQGA6-h6n_KSEmsftXS2FdzPVMiG1DQDVyrG5OO_vpQyxCbVa1aublcZIXgz7GxEmmJhCcAoMA6YpR1HJKFGSShCLbPhbGd-Ssq6000TuNuud0iVwq376zQ4zHy4-MwMk5j5_AyLgi-fcD3oXQA8l6IVkVG16JjhFoWI6vTkP5D1C_EQnBaZqgsiOZW6Nv3EXobFNhx5y-Fd_s6Bvp7LfM6vxlVbNZ153gN-AR_i88T6X__tksgHeHymAJ1Sgg4G0M_MqLkMWNDwDQ
> > > cache-control: no-cache
> > > {
> > > "name": "identity-v1"
> > > }------WebKitFormBoundary7MA4YWxkTrZu0gW--
> > >
> > > *RESPONSE*
> > > *Response Code 200*
> > > *Body*
> > > {
> > > "adminPassword": "V1lXUizDyhWNZa56Ja8BOaAkq1SlPglnuJ9uODdPBpg="
> > > }
> > >
> > > *STEP 3*
> > >
> > > *REQUEST*
> > >
> > > POST /identity/v1/token?grant_type=password& username=antony&
> > > password=V1lXUizDyhWNZa56Ja8BOaAkq1SlPglnuJ9uODdPBpg=& User=imotep
> > > HTTP/1.1
> > > Host: localhost:8081
> > > Content-Type: application/json
> > > X-Tenant-Identifier: UMFB
> > > cache-control: no-cache
> > >
> > > *RESPONSE*
> > >
> > > {
> > > "tokenType": "bearer",
> > > "accessToken": "Bearer
> > >
> >
> eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJhbnRvbnkiLCIvZmluY24uYXBhY2hlLm9yZy9zIjoiMjAxOS0wNC0xMlQxNV80OF8xMCIsIi9maW5jbi5hcGFjaGUub3JnL2MiOiJ7XCJ0b2tlblBlcm1pc3Npb25zXCI6W3tcInBhdGhcIjpcImlkZW50aXR5LXYxL3VzZXJzL3t1c2VyaWRlbnRpZmllcn0vcGVybWlzc2lvbnNcIixcImFsbG93ZWRPcGVyYXRpb25zXCI6W1wiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvYXBwbGljYXRpb25zLyovcGVybWlzc2lvbnMvKi91c2Vycy97dXNlcmlkZW50aWZpZXJ9L2VuYWJsZWRcIixcImFsbG93ZWRPcGVyYXRpb25zXCI6W1wiQ0hBTkdFXCIsXCJERUxFVEVcIixcIlJFQURcIl19LHtcInBhdGhcIjpcImlkZW50aXR5LXYxL3Rva2VuL19jdXJyZW50XCIsXCJhbGxvd2VkT3BlcmF0aW9uc1wiOltcIkRFTEVURVwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvcm9sZXMvKlwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIlJFQURcIixcIkRFTEVURVwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvcGVybWl0dGFibGVncm91cHMvKlwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIlJFQURcIixcIkRFTEVURVwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvdXNlcnMvKlwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIkRFTEVURVwiLFwiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvdXNlcnMve3VzZXJpZGVudGlmaWVyfS9wYXNzd29yZFwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIkRFTEVURVwiLFwiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbmlkZW50aWZpZXJ9L3Blcm1pc3Npb25zXCIsXCJhbGxvd2VkT3BlcmF0aW9uc1wiOltcIkNIQU5HRVwiLFwiUkVBRFwiLFwiREVMRVRFXCJdfV19IiwiL2ZpbmNuLmFwYWNoZS5vcmcvYSI6ImlkZW50aXR5LXYxIiwiaXNzIjoidGVuYW50IiwiaWF0IjoxNTU1MDg0ODI4LCJleHAiOjE1NTUxMzg4Mjh9.Er80R6ivyw2xAsd5Sd-dtKx-0-m1QonCACzPYiz_DcXO-ZwbyymNcH2USQR50TV4ClCdF9iIPcS58i-TReDT7ro1BzqPqRcVvZ2AHKoOR3IAb-_PjHCplge_bvqbE025USvxo73K3dA8NTHJ2E65lR4s_clFdRsZ0aODCpjQlRla1v1ASSrU4QJKJ51rzHDRfoZ6kpnym5w-c5uw8KnFHvEUDo-EFYzz93gPT644MY-7FI3fFw8WIy_nwdK-Gekf6iU6CLXotyal1mT5ocRSNk9PaJrYORDfb_N7CDjIOMmhWrk1hf2-qXbZj3eu02X5hQ292c0GN5Y3LNAuUtmGQQ",
> > > "accessTokenExpiration": "2019-04-13T07:00:28.693Z",
> > > "refreshTokenExpiration": "2019-04-13T07:00:28.641Z",
> > > "passwordExpiration": null
> > > }
> > >
> > > *STEP 4 (a)*
> > > *REQUEST:*
> > >
> > > POST /identity/v1/roles HTTP/1.1
> > > Host: localhost:8081
> > > Content-Type: application/json
> > > X-Tenant-Identifier: UMFB
> > > Authorization: Bearer
> > >
> >
> eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJhbnRvbnkiLCIvZmluY24uYXBhY2hlLm9yZy9zIjoiMjAxOS0wNC0xMlQxNV80OF8xMCIsIi9maW5jbi5hcGFjaGUub3JnL2MiOiJ7XCJ0b2tlblBlcm1pc3Npb25zXCI6W3tcInBhdGhcIjpcImlkZW50aXR5LXYxL3VzZXJzL3t1c2VyaWRlbnRpZmllcn0vcGVybWlzc2lvbnNcIixcImFsbG93ZWRPcGVyYXRpb25zXCI6W1wiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvYXBwbGljYXRpb25zLyovcGVybWlzc2lvbnMvKi91c2Vycy97dXNlcmlkZW50aWZpZXJ9L2VuYWJsZWRcIixcImFsbG93ZWRPcGVyYXRpb25zXCI6W1wiQ0hBTkdFXCIsXCJERUxFVEVcIixcIlJFQURcIl19LHtcInBhdGhcIjpcImlkZW50aXR5LXYxL3Rva2VuL19jdXJyZW50XCIsXCJhbGxvd2VkT3BlcmF0aW9uc1wiOltcIkRFTEVURVwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvcm9sZXMvKlwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIlJFQURcIixcIkRFTEVURVwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvcGVybWl0dGFibGVncm91cHMvKlwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIlJFQURcIixcIkRFTEVURVwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvdXNlcnMvKlwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIkRFTEVURVwiLFwiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvdXNlcnMve3VzZXJpZGVudGlmaWVyfS9wYXNzd29yZFwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIkRFTEVURVwiLFwiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbmlkZW50aWZpZXJ9L3Blcm1pc3Npb25zXCIsXCJhbGxvd2VkT3BlcmF0aW9uc1wiOltcIkNIQU5HRVwiLFwiUkVBRFwiLFwiREVMRVRFXCJdfV19IiwiL2ZpbmNuLmFwYWNoZS5vcmcvYSI6ImlkZW50aXR5LXYxIiwiaXNzIjoidGVuYW50IiwiaWF0IjoxNTU1MDg0ODI4LCJleHAiOjE1NTUxMzg4Mjh9.Er80R6ivyw2xAsd5Sd-dtKx-0-m1QonCACzPYiz_DcXO-ZwbyymNcH2USQR50TV4ClCdF9iIPcS58i-TReDT7ro1BzqPqRcVvZ2AHKoOR3IAb-_PjHCplge_bvqbE025USvxo73K3dA8NTHJ2E65lR4s_clFdRsZ0aODCpjQlRla1v1ASSrU4QJKJ51rzHDRfoZ6kpnym5w-c5uw8KnFHvEUDo-EFYzz93gPT644MY-7FI3fFw8WIy_nwdK-Gekf6iU6CLXotyal1mT5ocRSNk9PaJrYORDfb_N7CDjIOMmhWrk1hf2-qXbZj3eu02X5hQ292c0GN5Y3LNAuUtmGQQ
> > > User: antony
> > > cache-control: no-cache
> > > {
> > > "identifier": "admin",
> > > "permissions": [
> > > {
> > > "permittableEndpointGroupIdentifier":
> > > "identity__v1__roles",
> > > "allowedOperations": [
> > > "READ",
> > > "CHANGE",
> > > "DELETE"
> > > ]
> > > },
> > > {
> > > "permittableEndpointGroupIdentifier":
> > > "accounting__v1__account",
> > > "allowedOperations": [
> > > "READ",
> > > "CHANGE",
> > > "DELETE"
> > > ]
> > > },
> > > {
> > > "permittableEndpointGroupIdentifier":
> > > "customer__v1__customer",
> > > "allowedOperations": [
> > > "READ",
> > > "CHANGE",
> > > "DELETE"
> > > ]
> > > },
> > > {
> > > "permittableEndpointGroupIdentifier":
> > > "customer__v1__portrait",
> > > "allowedOperations": [
> > > "READ",
> > > "CHANGE",
> > > "DELETE"
> > > ]
> > > },
> > > {
> > > "permittableEndpointGroupIdentifier":
> > > "accounting__v1__account",
> > > "allowedOperations": [
> > > "READ",
> > > "CHANGE",
> > > "DELETE"
> > > ]
> > > },
> > > {
> > > "permittableEndpointGroupIdentifier":
> > > "customer__v1__customer",
> > > "allowedOperations": [
> > > "READ",
> > > "CHANGE",
> > > "DELETE"
> > > ]
> > > },
> > > {
> > > "permittableEndpointGroupIdentifier":
> > > "customer__v1__portrait",
> > > "allowedOperations": [
> > > "READ",
> > > "CHANGE",
> > > "DELETE"
> > > ]
> > > }
> > > ]
> > > }------WebKitFormBoundary7MA4YWxkTrZu0gW--
> > >
> > > *RESPONSE*
> > >
> > > 202 Accepted
> > >
> > > *STEP 4 (b)*
> > >
> > > *REQUEST*
> > >
> > > POST /identity/v1/users HTTP/1.1
> > > Host: localhost:8081
> > > Content-Type: application/json
> > > X-Tenant-Identifier: UMFB
> > > Authorization: Bearer
> > >
> >
> eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJhbnRvbnkiLCIvZmluY24uYXBhY2hlLm9yZy9zIjoiMjAxOS0wNC0xMlQxNV80OF8xMCIsIi9maW5jbi5hcGFjaGUub3JnL2MiOiJ7XCJ0b2tlblBlcm1pc3Npb25zXCI6W3tcInBhdGhcIjpcImlkZW50aXR5LXYxL3VzZXJzL3t1c2VyaWRlbnRpZmllcn0vcGVybWlzc2lvbnNcIixcImFsbG93ZWRPcGVyYXRpb25zXCI6W1wiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvYXBwbGljYXRpb25zLyovcGVybWlzc2lvbnMvKi91c2Vycy97dXNlcmlkZW50aWZpZXJ9L2VuYWJsZWRcIixcImFsbG93ZWRPcGVyYXRpb25zXCI6W1wiQ0hBTkdFXCIsXCJERUxFVEVcIixcIlJFQURcIl19LHtcInBhdGhcIjpcImlkZW50aXR5LXYxL3Rva2VuL19jdXJyZW50XCIsXCJhbGxvd2VkT3BlcmF0aW9uc1wiOltcIkRFTEVURVwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvcm9sZXMvKlwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIlJFQURcIixcIkRFTEVURVwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvcGVybWl0dGFibGVncm91cHMvKlwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIlJFQURcIixcIkRFTEVURVwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvdXNlcnMvKlwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIkRFTEVURVwiLFwiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvdXNlcnMve3VzZXJpZGVudGlmaWVyfS9wYXNzd29yZFwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJDSEFOR0VcIixcIkRFTEVURVwiLFwiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbmlkZW50aWZpZXJ9L3Blcm1pc3Npb25zXCIsXCJhbGxvd2VkT3BlcmF0aW9uc1wiOltcIkNIQU5HRVwiLFwiUkVBRFwiLFwiREVMRVRFXCJdfV19IiwiL2ZpbmNuLmFwYWNoZS5vcmcvYSI6ImlkZW50aXR5LXYxIiwiaXNzIjoidGVuYW50IiwiaWF0IjoxNTU1MDg0ODI4LCJleHAiOjE1NTUxMzg4Mjh9.Er80R6ivyw2xAsd5Sd-dtKx-0-m1QonCACzPYiz_DcXO-ZwbyymNcH2USQR50TV4ClCdF9iIPcS58i-TReDT7ro1BzqPqRcVvZ2AHKoOR3IAb-_PjHCplge_bvqbE025USvxo73K3dA8NTHJ2E65lR4s_clFdRsZ0aODCpjQlRla1v1ASSrU4QJKJ51rzHDRfoZ6kpnym5w-c5uw8KnFHvEUDo-EFYzz93gPT644MY-7FI3fFw8WIy_nwdK-Gekf6iU6CLXotyal1mT5ocRSNk9PaJrYORDfb_N7CDjIOMmhWrk1hf2-qXbZj3eu02X5hQ292c0GN5Y3LNAuUtmGQQ
> > > User: antony
> > > cache-control: no-cache
> > > {
> > > "identifier": "kehinde",
> > > "role": "admin",
> > > "password":"Password12$"
> > > }------WebKitFormBoundary7MA4YWxkTrZu0gW--
> > >
> > >
> > > *RESPONSE *
> > >
> > > 202 Accepted
> > >
> > >
> > > *STEP 5*
> > >
> > > *REQUEST *
> > >
> > > POST /identity/v1/token?grant_type=password& username=kehinde&
> > > password=UGFzc3dvcmQxMiQ= HTTP/1.1
> > > Host: localhost:8081
> > > Content-Type: application/json
> > > X-Tenant-Identifier: UMFB
> > > cache-control: no-cache
> > >
> > >
> > > RESPONSE
> > >
> > > 404 Not found
> > >
> > >
> > > This is where I'm stucked, but when I used the password generated and
> > > username antony and user kehinde that I created earlier on, it will be
> > > successful.
> > >
> > >
> > > Kindly advice accordingly
> > >
> > >
> > >
> > > On Fri, 12 Apr 2019 at 14:16, Courage Angeh <[email protected]>
> > > wrote:
> > >
> > >> Hi Babajide,
> > >>
> > >> - First, you create a tenant
> > >> - Next, you assign identity service for that tenant. This will respond
> > >> with an *admin password*.
> > >> - Then, you authenticate using the tenant you created in the first
> step,
> > >> the password you got from the previous step and user="*imotep*". This
> > >> will respond with an *access token*
> > >> - Then you can use the access token you got to create a role(s) and
> > >> user(s).
> > >> - Next, you authenticate using the newly created user and then you
> > update
> > >> the user's password.
> > >> - Then, you authenticate again using the updated password.
> > >> - Finally, you can use the user's authentication credentials to
> perform
> > >> the desired request(s).
> > >>
> > >> Hope it helps.
> > >>
> > >> Regards,
> > >> Courage.
> > >>
> > >> On Fri, Apr 12, 2019 at 8:16 AM Babajide Apata <
> [email protected]
> > >
> > >> wrote:
> > >>
> > >>> Hello All,
> > >>>
> > >>> Please I need someone to point me in the right direction on how to
> use
> > >>> the Identity service in generating user/client/tenant access token
> > that can
> > >>> access other services like account, customer et al.
> > >>>
> > >>> I have a scenario where I created an admin role with permission to
> some
> > >>> of the services.
> > >>> I created a new user with admin role assigned to it, and I tried
> > >>> generating token with the user I created earlier on, so as for the
> > token to
> > >>> bundle all the endpoint accessible to it, and subsequently use the
> > token to
> > >>> access other services which the user has access to, but to no avail.
> > >>>
> > >>> I feel there is a mix up somewhere, or that my understand of the APIs
> > is
> > >>> enough yet.
> > >>>
> > >>> I will appreciate any help in the right direction.
> > >>>
> > >>>
> > >>> Kind Regards
> > >>>
> > >>> Babajide Apata
> > >>> Software Engineer
> > >>>
> > >>>
> > >>> Mifos-developer mailing list
> > >>> [email protected]
> > >>> Unsubscribe or change settings at:
> > >>> https://lists.sourceforge.net/lists/listinfo/mifos-developer
> > >>
> > >> Mifos-developer mailing list
> > >> [email protected]
> > >> Unsubscribe or change settings at:
> > >> https://lists.sourceforge.net/lists/listinfo/mifos-developer
> > >
> > > Mifos-developer mailing list
> > > [email protected]
> > > Unsubscribe or change settings at:
> > > https://lists.sourceforge.net/lists/listinfo/mifos-developer
> >
> >
> >
> > --
> > *Ed Cable*
> > President/CEO, Mifos Initiative
> > [email protected] | Skype: edcable | Mobile: +1.484.477.8649
> >
> > *Collectively Creating a World of 3 Billion Maries | *http://mifos.org
> > <http://facebook.com/mifos> <http://www.twitter.com/mifos>
> >
>