Features / VO & endorsements

VO / SHG / Farmer endorsement

Unit/FMT staff review farmers, SHGs and VOs and mark them endorsed, flagged or resolved, with threaded comments and abstract documents. Endorsing locks the farmers' KAP.

FactsheetVO & endorsements
Who uses it
Unit-in-charge (unit-incharge)FMT (fmt_l1)
How you get here
VO tab (home for Unit/FMT login) > Endorsement card. Drawer "Endorsements" item (unit login only); drawer "Refresh" reloads endorsements.
Tables
endorsement_entity, ie_flat_entity
APIs
13 calls today, 13 App Service operations
Offline
Status changes are saved to endorsement_entity and synced later; category-freeze and KAP-submitted checks need server data.

Screens

ScreenWhat it doesSource
VO tab hubCards for Endorsement, Survey and Compact Block.app/src/main/java/org/platformcommons/urvi/view/endorsements/VoTabFragment.kt
Endorsement listVO > SHG > farmer drill-down with status menus and bulk endorse.app/src/main/java/org/platformcommons/urvi/view/endorsements/vo/EndorsementFragment.kt
Resolve commentsStatus actions and threaded comments.app/src/main/java/org/platformcommons/urvi/view/endorsements/comment/ResolveCommentsFragment.kt

What it captures

FieldTypeRequiredValidationOptions from
CommentTextNoThreaded with "load more"; auto comments added for Not resolved / Mark as resolved.User input
Endorsed abstract uploadFileNoAccepts image/*, PDF and Word files. VO/SHG only.Device files

Rules

Conditions from the code, rewritten as plain decision rules.

WhenThen
NavigatingVO list > SHG list > farmer list > KAP 25-26 read-only. Lists are sorted by name and filtered by the Home search box.
Row status PENDINGMenu: Raise flag, Mark as endorsed, Download abstract (VO/SHG only).
Row status FLAGGEDMenu: View comments, Mark as endorsed.
Row status ENDORSEDMenu: View comments, Upload endorsed abstract, Get endorsed abstract (VO/SHG only).
Row status REVIEWMenu: View comments, Mark as endorsed.
Row is a farmerDownload / Upload / Get abstract are always hidden.
Endorsing a farmer without IE idBlocked.
Endorsing a farmer whose category is not frozen (server PLUS_ONE_FARMING_CATEGORY_LAST_UPDATE_DATE check)"please freeze the category before endorsing".
Endorsing a C4 farmer with frozen categoryEndorsed directly.
Endorsing a non-C4 farmer whose KAP 25-26 is not submitted"submit KAP".
Endorsing an SHG with any active farmer lacking IE id"there are few farmers with no IE id".
Endorsing an SHG with unfrozen farmer categoriesShows list of unfrozen farmers.
Endorsing an SHG where all farmers are C4Endorsed.
Endorsing an SHG where some Farmer/C5 members have not submitted KAPShows list of those members; blocked.
Endorsing a VO with any SHG not endorsed"Please endorse SHG below" with the list; blocked.
Flag / Not resolved / Mark as resolvedStatus FLAGGED / FLAGGED + auto comment / REVIEW + auto comment.
Non-SHG farmer list under a VO"Bulk endorse" button: takes the VO's farmers, keeps those with KAP submitted (dataset PlusOneAAP2526IEIDStatus), confirms, then calls bulk endorse.
A VO or SHG is endorsedStatus is also written to that VO's or SHG's ie_flat_entity rows, which locks their KAP.

API contracts

Each call opens to its use case, headers, request and response bodies, and errors.

Today: callUseReplaced by
GET /gateway/commons-report-service/api/v1/datasets/name/PLUS_ONE_FARMING_CATEGORY_LAST_UPDATE_DATE/executeGet each farmer's farming-category last update (gap start) date.
GET /rtld/api/dataset/v1/execute?name=PlusOneAAP2526IEIDStatusGet the review status of farmers' 2025-26 action plans.
GET /gateway/commons-report-service/api/v1/datasets/name/PlusOneWorkNodeFarmerListGeoWiseNoPagination/executeList farmers in a geography without paging (endorsement screens).
GET /gateway/asset-service/api/v1/endorsement/me?page&sizeDownload endorsements (reviews) assigned to or made by the user.
GET /rtld/api/dataset/v1/execute?name=PlusOneEndorsementVOHierarchyLoad endorsements across the VO hierarchy for the VO tab.
GET /gateway/asset-service/api/v1/endorsementComment?entityID&entityType&page&sizeLoad comments on an endorsed entity.
GET /gateway/asset-service/api/v1/endorsements/attachment?endorsementId&attachmentFormat=ATTACHMENT_URLGet the download URL of an endorsement attachment, then download it.
POST /gateway/asset-service/api/v1/endorsement/bulk/save-allSave one or more endorsements (approve/reject). Sent online or through the offline queue.
GET /raw-data-service/report/ryss-abstract/{voId}/vo?adminUser=trueDownload the VO abstract as an Excel file.
GET /raw-data-service/report/ryss-abstract/{id}/shgDownload the SHG abstract as an Excel file.
POST /gateway/asset-service/api/v1/endorsements/attachment?endorsementID&endorsementUUIDUpload the abstract file attached to an endorsement.
POST /gateway/asset-service/api/v1/endorsementCommentPost a comment on an endorsement.
SDK FCM topic subscribe: urvi_endorsement_status, urvi_endorsement_comment, NOTIFICATIONReceive endorsement and broadcast push messages.
App Service v2: operationUse
GET /configTyped config bundle (ETag)
GET /farmers/searchSearch farmers in a geography (online)
GET /farmers/{farmerId}/planKAP / annual action plan for a season
GET /endorsementsEndorsement statuses (VO, SHG, farmer)
GET /endorsements/{entityType}/{entityId}/commentsComment thread of an endorsed entity
GET /endorsements/{entityType}/{entityId}/eligibilityWhy an endorsement action is allowed or blocked
GET /vo/{voId}/abstractVO abstract download link
GET /shg/{shgId}/abstractSHG abstract download link
POST /sync/batchApply an ordered batch of offline mutations
POST /filesCreate a file upload (resumable or single-shot)
GET /files/{fileId}File metadata and signed download URL
PATCH /files/{fileId}Append a chunk to a resumable upload
HEAD /files/{fileId}Current offset of a resumable upload

Behaviour notes

  • The farmer KAP opened from here is read-only (UIC mode).

Improve in the rewrite

  • Show the blocking checklist (IE id, frozen category, KAP submitted, SHGs endorsed) before the user taps endorse.
  • Move hard-coded menu matrix to a status-to-actions table shared with the server.