reapit / foundations

Foundations platform mono repo
57 stars 21 forks source link

Data questions for replacing iupload export to LonRes #10615

Open metaljoe opened 8 months ago

metaljoe commented 8 months ago

I'm currently working on a Foundations app replacement for the iupload export to LonRes. Although I've had some basic documentation on the existing field mappings from Reapit to the BLM file format, there are two fields that are still unclear.

Commission

Agent commissions are a key feature of the LonRes service. At the moment, mutual clients have to the ability to send us two types of commission values in the LONRES_FEE field: either a percentage value or "Call for Fees" (three if you include the empty value). Reapit apparently does not support our "Clients Only" option, or at least it is not being sent to us at present.

It looks like I can extract the percentage value from fee or lettingFee as appropriate, assuming it has been specified. However, there is no documented way to receive the value of "Call for Fees". How is this currently set by iupload?

Description

The documentation I have says:

A combination of the following is typically sent for this description:
    Brief Description
    Long Description (Marketing screen)
    Directions (Marketing Screen)
    Rooms
    Accommodation Summary

However, this does not exactly specify how these fields are combined nor does it imply the combination is consistent across agents. Again, how is this currently set by iupload and how to replicate based on the fields available via the Foundations API?

AshDeeming commented 8 months ago

Hi @metaljoe Pleases see the property payload in the swagger docs to see the breakdown including the fee: image

Descriptions can also be found in the properties endpoint, however please see the below regarding semi structured data such as Directions: https://foundations-documentation.reapit.cloud/faqs#certain-fields-are-not-exposed-by-default-in-the-platform

metaljoe commented 8 months ago

Hi Ash,

Thanks for the quick response, however this does not answer either question. I have been using both the Swagger documentation and also a document supplied by Michael Wood back at the end of November which was compiled by someone familiar with the current export BLM to LonRes.

First off, the fee information only provides numeric values (as also confirmed by your screenshot) - it does not indicate whether an agent has specified "Call for Fees". This is not a default in the case of no value being supplied, so I'd like to know how I can get this information.

As to the description, according to the documentation I have been supplied (see the quote above) the "description" currently being sent to LonRes in the BLM file is a combination of multiple fields (of which description is just one). I would like to know exactly how these fields are combined, and whether "typically" means that this is potentially different between agents. If it can vary based on agent, how can I determine what fields are combined?

Thanks in advance.

John

AshDeeming commented 8 months ago

Thanks @metaljoe

For the fee information - I'll convert this ticket to a feature request for this detail to be reviewed by the back end team.

With regards to descriptions, these can be used in various ways by clients.
Please see the below, from the properties swagger model which may assist for the below;

Brief Description - there are 3 standard fields in the CRM: image

Rooms

image

Accommodation Summary image

Note that the below descriptions, that can be custom per client are classed as semi structed data, please see; https://foundations-documentation.reapit.cloud/faqs#certain-fields-are-not-exposed-by-default-in-the-platform

Long Description (Marketing screen) Directions (Marketing Screen)

metaljoe commented 8 months ago

Hi Ash,

Okay, thanks. Sounds like because it was a custom addition to the BLM export for LonRes, it's missing from the data available via Foundations. Hopefully it can be added easily.

As to the composed description, I'm aware of the various fields just not the specifics of what logic is used to merge these together to match what is currently exported in the BLM's DESCRIPTION field. From what you say, it does sound like it's going to be different per agent. Given the urgent need to get this implementation in place, I think I'm going to have to wait until I have live property data to compare against the existing BLM file and work it out that way as we migrate agents over to the app.

Kind regards,

John

AshDeeming commented 7 months ago

Hi @metaljoe After further review, could i ask you to confirm if it's the price qualifier you are looking for, with the below options: (properties>Selling)

image

metaljoe commented 7 months ago

Hi @AshDeeming

Not sure if you're referring to the description or commission issues, but it's not the price qualifier I'm looking for for either.

For Description, I now have access to live data for Russell Simpson and have figured out which fields are used to make up the description.

As regards the ongoing problem with the commission, I have emailed Michael Wood and Matt Goddard as it appears the problem is wider than just missing Call for Fees. Am I right in saying that the Reapit software has a separate fields for mutual customers to set the commission on LonRes? If so, this is apparently not available via the Foundations API. Some examples for Russell Simpson are:

At the moment, this is potentially a show stopper for migrating to the new system as our mutual customers make use of the commission feature.

plittlewood-rpt commented 6 months ago

I have reached out to the team that look after the existing BLM feeds. WE need to do a feature comparison to see which custom elements that go into the existing LonRes BLM feed aren't represented in the APIs. Once we have this information it will form a short workstream to ensure there is feature parity where required.

michaelwoodPSM commented 6 months ago

Lonres BLM Feed Fields.docx RMV3 Spec.pdf @plittlewood-rpt - I had already requested the comparison from service control, see attached.

plittlewood-rpt commented 6 months ago

Hi @metaljoe

Sorry it's taken some time to get a comprehensive response back to you. I'll try to answer everything in one response.

The fields you will need are largely already available, with the exception of fee information. I have logged a new ticket to deal with this as we'll need to expose some additional bits of information to give you full visibility of how it is configured on each property. See a table below summarising the mappings you need:

BLM Field Summary Platform Mapping
LONRES_FEE Information from the Rent/Fee Details screen.
“Call for fees” is sent if the option has been selected.
Otherwise, the Fee to Sub Agents % is sent.
See ticket #10940
LONRES_SOLD The Exchange Date of the Property. Only sent for Sales listings. PropertySellingModel.Exchanged
LONRES_FEET The number of Feet entered for the Property on the Attributes screen. PropertyInternalAreaModel.Min/Max
LONRES_LEASE_END The Expiry date for Leasehold Properties. Found on the Attributes screen. PropertyTenureModel.Expiry
LONRES_GARDEN Does the Property have a Garden?
If the Property has an attribute ticked that is mapped to the Garden Sub ID, we send this field as Y.
Typically found in PropertyModel.Situation but requires mapping back to customers department and attribute configuration using GET /departments (please see Swagger documentation for more information)
LONRES_PARKING Does the Property have a Garage?
If the Property has an attribute ticked that is mapped to the Garage Sub ID, we send this field as Y.
Typically found in PropertyModel.Parking but requires mapping back to customers department and attribute configuration using GET /departments (please see Swagger documentation for more information)
LONRES_RECEPTION The number of Reception rooms entered for the Property on the Attributes screen. PropertyModel.Receptions
LONRES_BATHS The number of Bathrooms entered for the Property on the Attributes screen. PropertyModel.Bathrooms
LONRES_SOLD_PRICE The Exchange Price entered on the Buyer and Sales Details tab of the Offers screen.
This is only populated if the Sales Property being sent is Exchanged or Completed.
PropertySellingModel.ExchangedPrice
LONRES_SERVICE_CHARGE The Service Charge amount per annum. Entered on the Keywords & Charges tab of the Attributes screen. PropertyModel.ServiceCharge
LONRES_GROUND_RENT The Ground Rent amount per annum. Entered on the Keywords & Charges tab of the Attributes screen. PropertyModel.GroundRent

Rooms, the Brief Description and Accomodation Summary are also already available in the properties API as follows:

Field Platform mapping
Rooms PropertyModel.Rooms
Brief Description PropertyModel.Description
Accommodation Summary PropertyModel.Summary
Long Description PropertyModel.LongDescription* The long description is a 'custom' description field which may not map correctly in all systems

I think this just leaves Directions. There are 6 customisable descriptions in the core CRM which can be different from customer to customer. As a result this isn't currently available in the core model, however we do have ways of including it for specific customers. This would adjust how you fetched your data slightly as we both have to enable the fields for those customers, and then you had to explicitly request it GET /properties?extrasField=pDirections. We did previously consider if we could sensibly come up with a way of exposing all extra descriptions as part of #8708 which I'll discuss again with our product team. If we did something like this it would be a subresource to each property as adding that data to the core property model would end up way too verbose.

Can you review the above and come back to me as appropriate? Please let me know if I've missed any of your points.

Thanks Pete

metaljoe commented 6 months ago

Hi @plittlewood-rpt - thanks for this, much appreciated.

Out of the above the commission / LONRES_FEE was the only one I hadn't resolved, and Michael Wood has explained the situation in a separate email. Thanks for raising the issue to get the commission (sub agent terms) made available.

For the description, I'm tempted to assume the default for the moment and adjust as necessary when migrating a specific agent over or if requested. Am I right in saying that using extrasField incurs additional API call costs?

plittlewood-rpt commented 6 months ago

Hi @metaljoe - using the extrasField mechanism doesn't incur additional costs no, but additional subresources would (if we built an endpoint along the lines of /properties/{id}/marketingDescriptions or something like that. The initial setup for existing customers could be a bit fiddly as they'll all have slightly different configurations (there's about 60 feeds I think) but once we've got over that hurdle it would only be needed for new setups. Just bear in mind that because the configurations are different you may need to adjust your call for each customer. The extrasField mechanism requires you to request the specific field in the database, in some this might be pDirections, in others it might be pDirectionsToProperty - we'd obviously help you understand what those fields were, but you'd need to cater for that in your own system when fetching data.