The Bromcom Partner Support Programme gives you Free Support to the Bromcom MIS Read and Write APIs. To become a registered partner, you need to sign an NDA. Please send your registration request to PartnerSupport@bromcom.com with your company details and purpose of your integration.
We have test systems for both Read Only Data and Write Data that you will be able to use to to help develop your own Interface to the Bromcom MIS and will give Login details for these when requested.
For any queries you can contact PartnerSupport@bromcom.com. Our team will get back to you within 2 working days.
Meanwhile you can click here to download a C# Sample Project for Read Only Data Service Bromcom APIs.
Note: All of our Entities are linked to the Adhoc Reporting module so it is possible to retrieve Data via the API, mirroring any report possible in the MIS. These are also being regularly expanded.
The following table lists the available functions in the Read Only Data Service:
Parameters:
SchoolID (int), Username (string), Password (string)
Parameters:
SchoolID (int), EntityName (string), EntityFilter (string), Username (string), Password (string)
EntityName: use the name of the entity which you retrieved from findEntitiesBySchoolID(…) method. For Example: Students
EntityFilter: you can apply any filter to the returned data set using SQL syntax. For Example: StartDate > '20100901' AND FirstName LIKE 'S%'
The following table lists the available functions in the Write Data Service:
Parameters:
schoolId (int), username (string), password (string), userId (int), emailAddress (string)
Parameters:
schoolId (int), username (string), password (string), userId (int)
Parameters:
schoolId (int), username (string), password (string), userId (int), emailAddress (string), ssoProvider (string)
schoolId (int), username (string), password (string), studentResultID (int), studentID (int)
assessmentTypeID (int), termID (int), yearGroupID (int), subjectID (int), result (string), resultDate (datetime), modifiedBy (int), modifiedDate (datetime), notes (string), foreColour (string), backgroundColour (string), isProtected (bit)
Parameters:
schoolId (int), username (string), password (string), studentId (int), calendarId (int), attendanceMark (string), minutesLate (int), attendanceComment (string), attendanceTakenBy (int), attendanceTakenDateTime (DateTime)
eventTypeName – 10 characters
eventTypeDescription – 80 characters
Parameters:
schoolId (int), username (string), password (string), eventTypeId (int), eventTypeName (string), eventTypeDescription (string)
eventGroupName – 20 characters
eventGroupDescription – 80 characters
Parameters:
schoolId (int), username (string), password (string), eventGroupId (int), eventGroupName (string), eventGroupDescription (string)
Parameters:
schoolId (int), username (string), password (string), eventId (int), eventName (string), eventDescription (string), eventTypeId (int), eventGroupId (int), adjustment (int)
Parameters:
schoolId (int), username (string), password (string), eventRecordId (int), studentId (int), eventId (int), ownerId (int), classId (int), locationId (int), witnessId (int), eventDate (DateTime), adjustment (int), comment (string), internalComment (string)
Parameters:
schoolId (int), username (string), password (string), personId(int), transactionDetails (string), amount (decimal), remainingBalance (Decimal), Instant (DateTime), transactionType (string)
externalId (int)
Parameters:
schoolId (int), username (string), password (string), personId(int), amount (decimal)
Parameters:
schoolId (int), username (string), password (string), groupId (int), studentId (int), startDate (DateTime), endDate (DateTime)
schoolId (int), username (string), password (string), personId (int), UserDefineFieldInstanceId (int), dataValue (string)
Parameters:
schoolId (int), username (string), password (string), studentId (int), preAdmissionGroupId (int), legalFirstName (string), legalLastName (string), preferredFirstName (string), preferredLastName (string), middleName (string), dateOfBirth (DateTime), gender (character), homeAddress (string), homeTelephone (string), mobileTelephone (string), emailAddress (string), siblingIDs (string), usualMealType (string), medicalConditionsDietaryNeeds (string), ethnicityName (string), religiousAffiliationName (string), homeLanguageName (string), firstLanguageNames (string), modeOfTravelName (string), parentalConsentNames (string), schoolHistories (string), doctorSurgery (string), contacts (string), upn (string), additionalInfo (string)
Special variable formats:
siblingIDs: comma separated i.e. 123,345
parentalConsentNames: comma separated i.e. ABC,DEF
firstLanguageNames: comma separated i.e. ENG,TUR
homeAddress: xml (multiple nodes)
<addresses>
<address>
<addressid>40</addressid> //if this is empty a new address will be created. Please try not to duplicate addresses
<town> LONDONDERRY</town>
<street> Stockwell Road</street>
<postcode>SE10 8EY</postcode>
<nationalityid>183</nationalityid>
<flatnamenumber></flatnamenumber>
<buildingnamenumber>40</buildingnamenumber>
<addressstartdate>20200901</addressstartdate>
<addressenddate></addressenddate>
<addresssortorder>1</addresssortorder>
<addresstypename>H</addresstypename>
</address>
<address>
<town> LONDONDERRY</town>
<street> Stockwell Street</street>
<postcode>SE10 8EY</postcode>
<nationalityid>183</nationalityid>
<flatnamenumber></flatnamenumber>
<buildingnamenumber>42</buildingnamenumber>
<addressstartdate>20200901</addressstartdate>
<addressenddate>99991231</addressenddate>
<addresssortorder>2</addresssortorder>
<addresstypename>A</addresstypename>
</address>
</addresses>
medicalConditionsDietaryNeeds: xml (multiple nodes)
<medicalconditionsdietaryneeds>
<medicalconditionsdietaryneed>
<conditionname>NUT</conditionname>
<priority>1</priority>
<notes>He has very sensitive nut allergy</notes>
</medicalconditionsdietaryneed>
<medicalconditionsdietaryneed>
<conditionname>SAT</conditionname>
<priority>2</priority>
<notes></notes>
</medicalconditionsdietaryneed>
</medicalconditionsdietaryneeds>
schoolHistories: xml (multiple nodes)
<schoolhistories>
<schoolhistory>
<schoolname>School A</schoolname>
<startdate>2020-09-01</startdate>
<enddate>2021-07-20</enddate>
<la>22</la>
<establishmentnumber>3333</establishmentnumber>
</schoolhistory>
<schoolhistory>
<schoolname>School B</schoolname>
<startdate>2021-09-01</startdate>
<la>40</la>
<establishmentnumber>1234</establishmentnumber>
</schoolhistory>
</schoolhistories>
doctorSurgery: xml (single node)
<doctorsurgery>
<surgeryname>Surgery A</surgeryname>
<surgeryaddress>
<postcode>BR2 9JG</postcode>
<nationalityid>183</nationalityid>
<town>Bromley</town>
<locality></locality>
<street>Masons Hill</street>
<flatnamenumber></flatnamenumber>
<buildingnamenumber>44</buildingnamenumber>
<administrativearea>Kent</administrativearea>
<addressid>123</addressid>
</surgeryaddress>
</doctorsurgery>
contacts: xml (multiple nodes)
<contacts>
<contact>
<contactid></contactid> //if this is empty a new contact will be created – otherwise it will map to the ID you have provided. Please try not to duplicate contacts
<title>Mrs</title>
<gender>F</gender>
<lastname>Smith</lastname>
<priority>1</priority>
<firstname>Carmela</firstname>
<courtorder>F</courtorder>
<correspondence>F</correspondence>
<parentalballot>F</parentalballot>
<studentreports>T</studentreports>
<mobiletelephone>11111111111</mobiletelephone>
<transferaddress>F</transferaddress>
<relationtypename>PAM</relationtypename>
<hasparentalresponsibility>T</hasparentalresponsibility>
<addresses>
<address>
<town>LONDONDERRY</town>
<street>Lupus Road</street>
<postcode>SW1V 3DY</postcode>
<nationalityid>183</nationalityid>
<locality>Ben</locality>
<flatnamenumber>ABS</flatnamenumber>
<buildingnamenumber>2</buildingnamenumber>
<administrativearea>tbh</administrativearea>
<addressstartdate>20210905</addressstartdate>
<addressenddate></addressenddate>
<addresssortorder>1</addresssortorder>
<addresstypename>H</addresstypename>
<addressid></addressid> //if this is empty a new address will be created. Please try not to duplicate addresses
</address>
</addresses>
<telephones>
<telephone>
<telephonenumber>22222222222</telephonenumber>
<telephonenumbertype>H</telephonenumbertype>
<telephonenumbersortorder>1</telephonenumbersortorder>
</telephone>
<telephone>
<telephonenumber>073333333333</telephonenumber>
<telephonenumbertype>M</telephonenumbertype>
<telephonenumbersortorder>2</telephonenumbersortorder>
</telephone>
</telephones>
<emails>
<email>
<emailtypename>H</emailtypename>
<emailaddress>a@b.com</emailaddress>
<emailsortorder>1</emailsortorder>
</email>
<email>
<emailtypename>W</emailtypename>
<emailaddress>3@4.com</emailaddress>
<emailsortorder>2</emailsortorder>
</email>
</emails>
</contact>
</contacts>
additionalInfo: xml nationality uses CBDS code set CS088/D0026
<additionalinfo>
<nationality>VNM</nationality>
</additionalinfo>
Returns EmployeeID INT
Parameters:
schoolId (int), username (string), password (string), employeeId (int) PK, title (string), firstName (string), lastName (string), middleName (string), preferredFirstName (string), preferredLastName (string), gender (char), dateOfBirth (datetime), staffCode (string), startDate (datetime), endDate (datetime), continuousServiceStartDate (datetime), localAuthorityStartDate (datetime), nationalInsuranceNumber (string), payrollNumber (string), jobTitle (string), religiousAffiliationName (string), ethnicity (string), disabilities (XML), doNotIncludeInCensus (bit), additionalInfo (XML)
Title: Mr, Mrs, Ms etc
Gender: M / F
StaffCode: Must not clash with another staff member, cannot be empty
StartDate: Must not be empty
ReligiousAffiliationName: CBDS codeset CS053
Ethnicity: CBDS codeset CS080 – DfES Main Code
Disabilities: XML uses CBDS codeset CS029
Disabilities XML Structure:
<Disabilities>
<Disability>BEH</Disability>
<Disability>AUT</Disability>
</Disabilities>
additionalInfo – Unused, exists for later expansion of the API if needed
Parameters:
schoolId (int), username (string), password (string), userId (int), emailAddress (string),
overwrite (bool)
Returns ContractID INT
Parameters:
schoolId (int), username (string), password (string), employeeId (int), contractId (int) PK, startDate (datetime), endDate (datetime), postSWF (string), contractNumber (string), contractTermName (string), doNotIncludeInCensus (bit), additionalInfo (XML)
StartDate: Must not be empty
POST SWF: CBDS code set CS083
ContractTermName: CBDS code set CS041
NB: ContractCategoryDescription: Defined by POST SWF – cannot be written back
additionalInfo – Unused, exists for later expansion of the API if needed
Returns EmployeeRoleID INT
Parameters:
schoolId (int), username (string), password (string), employeeRoleId (int) PK, employeeRoleTypeName (string), startDate (datetime), endDate (datetime), contractId (int)
Parameters:
schoolId (int), username (string), password (string), basePaymentId (int), basePaymentName (string), basePaymentDescription (string), isActive (bit), basePayHoursPerWeek (decimal), basePayWeekPerYear (decimal), basePaymentCategoryName (string), basePaymentFinancialGroupName (string), scalePointGroups (XML), scalePoints (XML), teachersPayVersions (XML), teachersPay (XML)
ScalePointGroups XML structure:
<ScalePointGroups>
<ScalePointGroup>
<ScalePointGroupCode>ABC</ScalePointGroupCode>
<ScalePointGroupDescription>A REALLY BIG LONG DESCRIPTION</ScalePointGroupDescription>
<IsActive>1</IsActive>
</ScalePointGroup>
<ScalePointGroup>
<ScalePointGroupCode>ABCD</ScalePointGroupCode>
<ScalePointGroupDescription>A REALLY MASSIVE DESCRIPTION</ScalePointGroupDescription>
<IsActive>0</IsActive>
</ScalePointGroup>
</ScalePointGroups>
ScalePoints XML structure:
<ScalePoints>
<ScalePoint>
<ScalePointName>ABC</ScalePointName>
<ScalePointDescription>A REALLY BIG LONG DESCRIPTION</ScalePointDescription>
<IsActive>1</IsActive>
<ScalePointGroupName>ABCD</ScalePointGroupName>
</ScalePoint>
<ScalePoint>
<ScalePointGroup>
<ScalePointName>ABCD</ScalePointName>
<ScalePointDescription>A REALLY MASSIVE DESCRIPTION</ScalePointDescription>
<IsActive>0</IsActive>
<ScalePointGroupName>ABC</ScalePointGroupName>
</ScalePoint>
</ScalePoints>
TeachersPayVersions XML Structure:
<TeachersPayVersions>
<TeachersPayVersions>
<TeachersPayVersionID>1</TeachersPayVersionID>
<StartDate>2021-09-01</StartDate>
<EndDate>2022-08-31</EndDate>
</TeachersPayVersion>
<TeachersPayVersion>
<TeachersPayVersionID>2</TeachersPayVersionID>
<StartDate>2021-09-01</StartDate>
<EndDate></EndDate>
</TeachersPayVersion>
</TeachersPayVersions>
TeachersPay XML Structure:
<TeachersPays>
<TeachersPay>
<ScalePointName>M1</ScalePointName>
<RegionSpine>EW</RegionSpine>
<Salary>25000</Salary>
<TeachersPayVersionID>1</TeachersPayVersionID>
</TeachersPay>
<TeachersPay>
<ScalePointName>M2</ScalePointName>
<RegionSpine>EW</RegionSpine>
<Salary>26000</Salary>
<TeachersPayVersionID>1</TeachersPayVersionID>
</TeachersPay>
<TeachersPay>
<ScalePointName>M3</ScalePointName>
<RegionSpine>EW</RegionSpine>
<Salary>27000</Salary>
<TeachersPayVersionID>1</TeachersPayVersionID>
</TeachersPay>
<TeachersPay>
<ScalePointName>M3</ScalePointName>
<RegionSpine>EW</RegionSpine>
<Salary>25000</Salary>
<TeachersPayVersionID>1</TeachersPayVersionID>
</TeachersPay>
<TeachersPay>
<ScalePointName>M1</ScalePointName>
<RegionSpine>EW</RegionSpine>
<Salary>25500</Salary>
<TeachersPayVersionID>2</TeachersPayVersionID>
</TeachersPay>
<TeachersPay>
<ScalePointName>M2</ScalePointName>
<RegionSpine>EW</RegionSpine>
<Salary>26500</Salary>
<TeachersPayVersionID>2</TeachersPayVersionID>
</TeachersPay>
<TeachersPay>
<ScalePointName>M3</ScalePointName>
<RegionSpine>EW</RegionSpine>
<Salary>27500</Salary>
<TeachersPayVersionID>2</TeachersPayVersionID>
</TeachersPay>
</TeachersPay>
Returns BasepaymentID INT
Returns ContractBasepaymentID INT
Parameters:
schoolId (int), username (string), password (string)
contractBasePaymentId (int) PK, contractId (int), basePaymentName (string), scalePointGroupName (string), scalePointName (string), startDate (datetime), endDate (datetime), annualSalary (decimal), payRangeMinimum (decimal), payRangeMaximum (decimal), payChangeReasonName (string), safeguarded (bit), hoursPerWeek (decimal), weeksPerYear (decimal)
Returns AdditionalPaymentTypeID INT
Parameters:
schoolId (int), username (string), password (string), additionalPaymentTypeId (int)PK, additionalPaymentTypeName (string), additionalPaymentTypeDescription (string), isActive (bit), additionalPaymentTypeCategoryName (string)
Returns ContractAdditionalPaymentTypeID INT
Parameters:
schoolId (int), username (string), password (string), contractAdditionalPaymentId (int) PK, additionalPaymentTypeName (string), amount (decimal), contractId (int), startDate (datetime), endDate (datetime), notes (string), allowanceTypeName (string), payFactor (decimal), superAnnuation (bit), niStatus (bit), benefitInKind (bit)
SortOrder – Allows user to order the absence codes, should be unique
Read only related API is EntityName StaffAbsenceCodes (for validation)
Returns StaffAbsenceCodeID INT
Parameters:
schoolId (int), username (string), password (string), staffAbsenceCodeId (int) PK, staffAbsenceCodeName (string), staffAbsenceCodeDescription (string), staffAbsenceCodeTypeName (string), status (bit), notifyToPayroll (bit), isPersonal (bit), sortOrder (int)
Only populated when StaffAbsenceCodeName has StaffAbsenceCodeTypeName = ‘SIC’ (check read only entityName StaffAbsenceCodes)
Parameter staffAbsenceTypeName accepts values found in read only related API EntityName StaffAbsenceTypes
Parameter staffAbsencePayDecisionTypeName accepts values found in read only related API EntityName StaffAbsencePayDecisionTypes
Returns StaffAbsenceID INT
Parameters:
schoolId (int), username (string), password (string), staffAbsenceId (int) PK
employeeId (int), staffAbsenceCodeName (string), staffAbsencePayDecisionTypeName (string), notes (string), startDate (datetime), endDate (datetime), staffAbsenceTypeName (string), duration (decimal), illnessCategoryName (string), hoursLost (decimal)
SortOrder is Unique to PersonID
Returns PersonAddressID INT
Parameters:
schoolId (int), username (string), password (string), personAddressId (int) PK, personId (int), addressId (int), buildingNameNumber (string), street (string), locality (string), town (string), administrativeArea (string), postCode (string), addressTypeDescription (string), uprn (string), startDate (datetime), endDate (datetime), sortOrder (int)
EmailAddressTypeName can only be: HOME, WORK, ALLTIME, OTHER
SortOrder is Unique to PersonID
Returns PersonEmailID INT
Parameters:
schoolId (int), username (string), password (string), personEmailId (int) PK, personId (int)
emailId (int), emailAddress (string), emailAddressTypeName (string), sortOrder (int)
TelephoneNumberTypeName can only be: All Day, EvnWk, Wkday, Notes
TelephoneNumberDeviceTypeName can only be: LANDLINE, MOBILE, FAX, PAGER
TelephoneTypeCategoryName can only be: Fax, Home, Alternate Home, Mobile, Work, Minicom (hearing impaired/disabled)
SortOrder is Unique to PersonID
ForTextMessage – Allows sending text messages to this number
Returns PersonTelephoneID INT
schoolId (int), username (string), password (string), governorId (int), governorReference (string)
schoolId (int), username (string), password (string), contractId (int)
schoolId (int), username (string), password (string), employeeRoleId (int)
schoolId (int), username (string), password (string), contractBasePaymentId (int)
schoolId (int), username (string), password (string), contractAdditionaPaymentId (int)
schoolId (int), username (string), password (string), staffAbsenceId (int)
schoolId (int), username (string), password (string), personAddressId (int)
schoolId (int), username (string), password (string), personEmailId (int)
schoolId (int), username (string), password (string), personAddressId (int)
Please see below for retrieving people photos from the Bromcom MIS System via APIs |
“PersonPhotos” entity will return an encrypted key under “Photo” column and this key needs to be replaced within the URL below to retrieve the photo: https://<ServerDomain>/Nucleus/Framework/Components/Controls/ImageDisplay.ashx?EncID=<PhotoEncryptionKey> You will need to retrieve photos of people one by one. This approach has been implemented in this way to avoid the potential huge data transfer problems in a single transaction due to photo sizes. |
As a signed up Interface Partner, you will be able to call yourself an Official Partner of Bromcom and your Name and Logo will be added to our list of Partners.
For more information contact us at PartnerSupport@bromcom.com