PowerPlatformConnectors
PowerPlatformConnectors copied to clipboard
Exact Time & Billing (Independent Publisher)
When submitting a connector, please make sure that you follow the requirements below, otherwise your PR might be rejected. We want to make you have a well-built connector, a smooth certification experience, and your users are happy :)
If this is your first time submitting to GitHub and you need some help, please sign up for this session.
- [x] I attest that the connector doesn't exist on the Power Platform today. I've verified by checking the pull requests in GitHub and by searching for the connector on the platform or in the documentation.
- [x] I attest that the connector works and I verified by deploying and testing all the operations.
- [x] I attest that I have added detailed descriptions for all operations and parameters in the swagger file.
- [x] I attest that I have added response schemas to my actions, unless the response schema is dynamic.
- [x] I validated the swagger file,
apiDefinition.swagger.json
, by runningpaconn validate
command. - [x] If this is a certified connector, I confirm that
apiProperties.json
has a valid brand color and doesn't use an invalid brand color,#007ee5
or#ffffff
. If this is an independent publisher connector, I confirm that I am not submitting a connector icon.
If you are an Independent Publisher, you must also attest to the following to ensure a smooth publishing process:
- [x] I have named this PR after the pattern of "Connector Name (Independent Publisher)" ex: HubSpot Marketing (Independent Publisher)
- [x] Within this PR markdown file, I have pasted screenshots that show: 3 unique operations (actions/triggers) working within a Flow. This can be in one flow or part of multiple flows. For each one of those flows, I have pasted in screenshots of the Flow succeeding.
- [x] Within this PR markdown file, I have pasted in a screenshot from the Test operations section within the Custom Connector UI.
- [x] If the connector uses OAuth, I have provided detailed steps on how to create an app in the readme.md.
Screenshots
Looks like an interesting and detailed API: https://start.exactonline.nl/docs/HlpRestAPIResources.aspx?SourceAction=10
@Knots23 Thank you so much for submitting proposal, you can move forward with the connector development and submit us the connector artifacts, we will review and provide you feedback. Please let us know if you have any questions. Thanks.
@sriyen-msft Thanks! Before removing the Proposal prefix, I do have a few questions:
- The checklist states:
If the connector uses OAuth, I have provided detailed steps on how to create an app in the readme.md.
The readme file links to the Exact Online website describing how to create / get a client ID and secret. Does that suffice?
-
As you need a client ID and secret: how will a user be able to provide these when creating a connection using this connector? The apiProperties file contains a
clientId
, but that now holds a placeholder I copied from one of the other connectors in this repo:{{ client id }}
. -
The documentation specifically states that you need to think whether to split your connector into multiple connectors. As the Exact Online API contains over 256 endpoints (the limit of a custom connector) I thought of splitting them into the so called Services they've thought up. That would result in 36 connectors. Would that be a problem? If not, I'll work on them, given the time, and submit them one by one, each in a separate pull request.
Hi @Knots23! For the topic of splitting connectors, 36 for 1 company would definitely be too much. My recommendation would be to split into maximum of 5-10 connectors by combining the services where it makes sense. I'm more than happy to hop on a call with you to figure out the best breakdown, if you'd like :)
@sriyen-msft Thanks! Before removing the Proposal prefix, I do have a few questions:
- The checklist states:
If the connector uses OAuth, I have provided detailed steps on how to create an app in the readme.md.
The readme file links to the Exact Online website describing how to create / get a client ID and secret. Does that suffice?
- As you need a client ID and secret: how will a user be able to provide these when creating a connection using this connector? The apiProperties file contains a
clientId
, but that now holds a placeholder I copied from one of the other connectors in this repo:{{ client id }}
.- The documentation specifically states that you need to think whether to split your connector into multiple connectors. As the Exact Online API contains over 256 endpoints (the limit of a custom connector) I thought of splitting them into the so called Services they've thought up. That would result in 36 connectors. Would that be a problem? If not, I'll work on them, given the time, and submit them one by one, each in a separate pull request.
I would recommend trying to maximize the number of endpoints per connector that keep the size per apiDefinition.swagger.json under the 1MB limit. The Square connector I built had to be split into two connectors because the size was over 1MB and that service has 150 actions.
Hey @natalie-pienkowska , @troystaylor , Thanks for your feedback. I'll group them in a way my colleagues and I see fit and will keep the size below 1MB. The name Exact System may change, as System is one of the Exact services. Exact stays in the name, obviously. :)
We could split the API based on the solutions Exact sells. The UK site shows six solutions, the Dutch site shows eight. (The two extra ones would be Construction and Human Resources.) This would however result in some overlap, i.e. various API methods will be in multiple connectors. What are your opinions on that?
Edit: They offer both Accounting and Accountancy. I think they are identical in terms of connectors.
@Knots23 My recommendation would be to avoid the same actions in multiple connectors :) 6 definitely sounds better than 36 though!!!!! We're getting closer to a good match.
@Knots23 Just an FYI- when you are ready to submit your connectors, please submit a separate PR for each one :)
@natalie-pienkowska I've dropped Exact Online an e-mail asking them if they could inform we which method belons to which subscription. Unfortunately they did not answer that e-mail.
The issue is now that:
- we are required by Microsoft to split the connector
- the file can be 1MB at most
- just splitting the API in two and naming them Exact Online 1 and Exact Online 2 feels wrong
- splitting them based on the categories defined by Exact Online results in too many connectors (36)
- splitting them based on the products Exact Online sells results in 8 connectors, but some methods will exist in multiple connectors
- splitting them (loosely) on the scopes Exact Online specifies, it will result in 13 connectors.
I'd like to go for number 5, as users can purchase one or more products. If they have a certain product, they can immediately tell which of the connectors to use and that connector contains all methods he/she can use without running into 403's. Downside is that we do not know which method goes where at this moment...
I could continue creating these 8 connectors, starting with Time & Billing. It may not contain all methods yet, but we can always submit updates. Would that be alright?
@sriyen-msft : I see you removed the Proposal part and added a label certification in progress but this connector is not done yet as we're still discussing how to split the API. =)
But if you all agree that point 5 from my earlier list is alright, then the current state is ready to be merged.
@Knots23 Thank you for presenting the pros and cons of each decision. I agree with your decision to pursue number 5 :) We will move forward with this 1st connector. Thank you so much for this contribution!
[[certify-connector]]
Hi @Knots23, I hope you are doing well. This is to inform you that we have contacted Exact Time and Billing company, in order to get subscription to be able to test the connector on our end. We are still waiting for a response from them. Apologies if this is taking longer time than expected. We will keep you posted. Thank you so much for your patience and understanding.
Hi @Knots23 just wanted to check in if you need any help or more time for this connector :)
Hey @natalie-pienkowska, I don't think this connector needs any alteration. According to @Amjed-Ayoub, Exact Online was contacted and you are waiting for a response regarding a (test) account. What's the status on that? :)
Hi @Knots23 thanks for the follow up! I'm also wondering if you know which tier we will need to support this connector.
Hi @natalie-pienkowska It seems - I didn't know - that it's possible to create a free developer account. If that works, I'll update the part on how to acquire an account to include this piece of information as well.
Hi @Knots23, I hope you are doing well. Unfortunately, we couldn't get in touch with the company. We sent a few emails but with no response. The only option we have now is from you to give us a valid subscription to the API and create an account for us to move forward with the deployment process. Do you think this is something possible to do on your end? Please let me know if you have any questions. Thank you so much again for your patience and please accept our apologies for the inconvenience this may cause. I look forward to hearing from you. Best regards.
Hello @Knots23, I hope you are doing well. I am following up in my messages to check how things are going with getting a subscription for deployment. Please do not hesitate to reach out to me if you have any questions as we are always here to help. 😊 I look forward to hearing from you. Thank you very much.
Hello @Knots23 , I hope you are doing well. I am following up with you to see how things are going with preparing your connector.
Please let us know how you would like to proceed.
Please let us know if you have any questions. Thank you.
@Knots23 we have made the required changes to your connector and we will proceed with the deployment process. Please let me us know if you have any concerns or questions. thank you so much again for your patience.
[[certify-connector]]
Hello @Knots23, I hope you are doing well. Congratulations, your pull request is approved. We will move forward with the certification process. We are preparing your connector for production deployment and will queue up for the next deployment schedule. Once your connector onboards the next deployment schedule, it starts to deploy your connector in our production environments that typically takes 3-4 weeks. Please let us know if you have any questions. Thank you very much for working with us.
Hello @Knots23, I hope you are doing well. Your connector is in production deployment and queued up for the next deployment schedule. This process typically takes 3-4 weeks. Please note that the documentation for your connector will not be generated until the deployment process is in the final steps. Please let us know if you have any questions. Thank you very much for working with us.
Hi all,
Thank you guys so much for creating this wonderful custom connector!
I'm a little in the dark regarding authentication. Exact requires to refresh the access token every 10 minutes . While I found that in practice this can be longer than 10 minutes, it still expires after some time and I need to manually re-authenticate. Are you having the same issues or am I doing something wrong?
I believe this issue can be solved by using the implicit grand type.
Like to hear from you!
I think I fixed the issue by editing the SecurityDefinition lines in the Swagger to:
"securityDefinitions": {
"oauth2_auth": {
"type": "oauth2",
"flow": "implicit",
"authorizationUrl": "https://start.exactonline.nl/api/oauth2/auth",
"scopes": {
"Projects billing": "Grants projects billing access"
}
}
}
I'm not fully sure as in the URL of the login screen the response_type parameter still gives 'response_type=code', which I expected to change to 'response_type=token'. But somehow I haven't re-authenticated for more than 12 hours already and it still hasn't expired.
@GaatzeGhetto I've tried that too, but the platform automatically sets it back to "accessCode". According to the documentation: "APIHub only supports the "access code" method of OAuth 2.0 configuration."