Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Azure Blob Storage, Azure File Share and SharePoint Online Connector Apps #23225

Merged
merged 68 commits into from
Jan 29, 2025

Conversation

IceOnly
Copy link
Contributor

@IceOnly IceOnly commented May 5, 2023

This PR contains three new connector apps, to connect Azure Blob Storage, Azure File Share and SharePoint Online with the New File System Module in the System App.

File System Module PR:
microsoft/BCApps#663

Here are some Screenshots:
image
image
image
image
image
image

Fixes #22691
Fixes AB#559148

@pri-kise
Copy link
Contributor

pri-kise commented May 5, 2023

Some general thoughts:
I think we need some kind of path serparated from the name added to the file account content.
It's often very important to know the path.

Additionally we might need some additional kind of top level selection before List Directories:
I'm thinking about a webservice for local file system access, there we should be able to select the Drive "C:" or "D:".
For Azure File Share we should be able to select the File Share on a top level before searching directories and files.

Further more if I take a look at the current sharepoint client. I have no idea how we should map this to the current provided
interface "File Connector".
https://github.com/microsoft/ALAppExtensions/blob/main/Modules/System/SharePoint/src/SharePointClient.Codeunit.al

Sometimes a path isn't enough and we might need more information to download a file.
Maybe this info could be added to the table 70005 "File Account Content" table and the interface "File Connector" could accept a "File Account Content" as parameter instead of a path....

Maybe someone else with more experience has some ideas how this access can be unified...

@IceOnly
Copy link
Contributor Author

IceOnly commented May 6, 2023

Some general thoughts: I think we need some kind of path serparated from the name added to the file account content. It's often very important to know the path.

Additionally we might need some additional kind of top level selection before List Directories: I'm thinking about a webservice for local file system access, there we should be able to select the Drive "C:" or "D:". For Azure File Share we should be able to select the File Share on a top level before searching directories and files.

Further more if I take a look at the current sharepoint client. I have no idea how we should map this to the current provided interface "File Connector". https://github.com/microsoft/ALAppExtensions/blob/main/Modules/System/SharePoint/src/SharePointClient.Codeunit.al

Sometimes a path isn't enough and we might need more information to download a file. Maybe this info could be added to the table 70005 "File Account Content" table and the interface "File Connector" could accept a "File Account Content" as parameter instead of a path....

Maybe someone else with more experience has some ideas how this access can be unified...

Why not listing C: and D: as directory on the top level?
The path is part of the Fiel Acount Content table. It is splitted in Parent Folder and Name.

However, I am not sure if the module should define the path separator. So all Services uses the same path structure and the implentation need to translate if needed.

Copy link
Contributor

@PeterConijn PeterConijn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks cool! I have a few small performance and security concerns, which I have addressed, and some minor other stuff, but nothing major. I'm excited for this.

@JesperSchulz
Copy link
Contributor

JesperSchulz commented Aug 18, 2023

Let me amplify this on Twitter/X to get your initial question answered: "before I go round the whole thing, I'm interested in whether there is any interest in the module at all". Let's see what people have to say! 😊

@tinfister
Copy link

I support every effort to improve file handling.

@dNsl9r
Copy link

dNsl9r commented Aug 18, 2023

Wonderful! Please merge this 👍🏻

@miljance
Copy link
Contributor

Easily overlooked feature but a needed one. Huge development effort that should not be thrown away.
Perhaps I will find some time to invest in contribution from my side but cannot make promises at the moment.

@TheDoubleH
Copy link

Bravo! Love seeing more 'helper' features/functions that eventually will benefit all of us!

@JesperSchulz
Copy link
Contributor

@IceOnly, this PR seems to have stagnated a little (which is perfectly fine). I was just wondering if you want to push this forward at some point, or if you've changed your mind / cannot find the time? There seems to be plenty of interest for this module in the community!

@IceOnly IceOnly requested a review from a team as a code owner October 6, 2023 07:26
@IceOnly IceOnly requested a review from dagirard October 6, 2023 07:26
@IceOnly
Copy link
Contributor Author

IceOnly commented Oct 6, 2023

@IceOnly, this PR seems to have stagnated a little (which is perfectly fine). I was just wondering if you want to push this forward at some point, or if you've changed your mind / cannot find the time? There seems to be plenty of interest for this module in the community!

It is the time. I will try to find some free time to make the last changes.

This are my open points:

  • I am struggling with the wist from pri-kise to split the Main Interface in logic interfaces like one for File, one for Directory and one for Account access. I like the Idea to implement one Interface and you are done.
  • I will try to implement a realy simple pagination interface. The Most file services uses realy different methods for getting the next batch. So i will only alow the implemntation to result a pagination codeunit that can store the inforamtion it needs to get the next batch. How big a batch is can only be defined by the implementation.

@JesperSchulz
Copy link
Contributor

Feel free to do it at your own pace. I didn't mean to stress you. I was just curious if you still intend to continue work. If you do, we'll just leave this PR open. No problem whatsoever.

@JesperSchulz JesperSchulz added processing-PR The PR is currently being reviewed and removed Needs community review/approval PRs needs atleast 2 reviewers from the community to approve. labels Jan 20, 2025
@JesperSchulz
Copy link
Contributor

None of the open comments prevent us from creating a first iteration of the connector apps. I will open an internal PR to get reviews from Microsoft started.

@JesperSchulz
Copy link
Contributor

@IceOnly, so far, so good. Build on GitHub is passing, internal build is now passing - in theory, I could submit the code!

However, with 0 tests I will probably have a hard time getting any sign-offs. I get that these apps only connect the tested module to tested API helper modules, but we would probably still need tests to verify the basic capabilities. Ideally we'd have mocks, but those aren't ready for showtime yet.

You don't happen to have a test or 10 lying around for this code, do you?

@IceOnly
Copy link
Contributor Author

IceOnly commented Jan 23, 2025

@IceOnly, so far, so good. Build on GitHub is passing, internal build is now passing - in theory, I could submit the code!

However, with 0 tests I will probably have a hard time getting any sign-offs. I get that these apps only connect the tested module to tested API helper modules, but we would probably still need tests to verify the basic capabilities. Ideally we'd have mocks, but those aren't ready for showtime yet.

You don't happen to have a test or 10 lying around for this code, do you?

@jesper I added some test. I selected some random ids (not fully random i prefixed the id Ranges of the Apps with 14), maybe I have to move the id of the test app.

@IceOnly IceOnly requested a review from JesperSchulz January 23, 2025 18:22
@JesperSchulz
Copy link
Contributor

@IceOnly, so far, so good. Build on GitHub is passing, internal build is now passing - in theory, I could submit the code!
However, with 0 tests I will probably have a hard time getting any sign-offs. I get that these apps only connect the tested module to tested API helper modules, but we would probably still need tests to verify the basic capabilities. Ideally we'd have mocks, but those aren't ready for showtime yet.
You don't happen to have a test or 10 lying around for this code, do you?

@jesper I added some test. I selected some random ids (not fully random i prefixed the id Ranges of the Apps with 14), maybe I have to move the id of the test app.

I have changed two IDs, which were conflicting. The other 4 seem fine. Let me run your changes in our internal pipeline and let's see what comes out of that! We're getting there 😊

@IceOnly IceOnly requested a review from a team as a code owner January 28, 2025 12:25
Copy link
Contributor

@JesperSchulz JesperSchulz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some minor issues left before we can merge :-)

… ListDirectories procedures across Azure Blob, Azure File, and SharePoint connectors
@tinestaric
Copy link
Contributor

We found another use case that would be nice to cover, but doesn't block this PR. This is more just dropping the idea for the future.

Using a Certificate to authenticate the Sharepoint connector. I see there already is a helper function for it in the SharepointAuth, so it's mainly about a way to store the certificate and password.

@IceOnly
Copy link
Contributor Author

IceOnly commented Jan 28, 2025

We found another use case that would be nice to cover, but doesn't block this PR. This is more just dropping the idea for the future.

Using a Certificate to authenticate the Sharepoint connector. I see there already is a helper function for it in the SharepointAuth, so it's mainly about a way to store the certificate and password.

We already discuss this in the past. I will add it after the base ist released.

@JesperSchulz JesperSchulz enabled auto-merge (squash) January 29, 2025 09:11
@JesperSchulz
Copy link
Contributor

Code has been merged internally 🥳 The apps are ready for release with 2025 wave 1! I will do some extensive testing on a release candidate, when we get that far, but other than that, it's a wrap!

@JesperSchulz JesperSchulz merged commit 77cfb39 into microsoft:main Jan 29, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Integration GitHub request for Integration area linked Issue is linked to a Azure Boards work item processing-PR The PR is currently being reviewed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature-Contribution] File Accounts